#c# #console-application
#c# #консольное приложение
Вопрос:
Я тестирую балансировщик нагрузки, для этого мне нужно запустить несколько HTTP-серверов. Прямо сейчас я могу запускать несколько HTTP-серверов, создавая несколько проектов. Однако я хотел бы знать, возможно ли запустить несколько экземпляров приложения только из одного решения.
Например, у меня есть следующий метод:
private static void RunLocalHttpServer(int Port)
{
try
{
HttpListener HttpListener = new HttpListener();
HttpListener.Prefixes.Add("http://localhost:" Port.ToString() "/");
HttpListener.Start();
}
catch (WebException ex)
{
Console.WriteLine(ex);
}
}
Этот метод вызывается в методе main моего консольного приложения, примерно так:
static void Main(string[] args) {
int[] ServerPorts = {8081, 8082, 8083};
for (int i = 0; i < ServerPorts.Length; i ) {
RunLocalHttpServer(ServerPorts[i]);
}
}
Когда я запускаю это приложение, оно открывает одну консоль с сервером, который прослушивает порт 8081. Однако я хотел бы запустить, в данном случае три отдельные консоли, где в каждой консоли будет запущен сервер (один на порту 8081, один на 8082 и один на 8083).
Возможно ли это сделать с помощью одного решения? Если нет, что я могу использовать в качестве альтернативы для достижения своей цели? Заранее спасибо.
Комментарии:
1. Почему это должно быть в одном решении? Почему это вообще должно быть в решении VS? Почему бы не сделать это старомодным и простым способом, просто используя какой-нибудь пакетный скрипт (или Powershell) для запуска такого-то количества экземпляров вашей программы? (передайте порт для каждого экземпляра программы, который вы запускаете, в качестве аргумента командной строки).
2. Почему вы не можете просто запустить несколько экземпляров исполняемого файла, передавая порт в качестве аргумента командной строки?
3. Предположим, возможно, вы могли бы создать задачу для каждого экземпляра, который вы хотите создать, и дождаться, пока все они завершат «закрываться». Если вы можете просто запустить несколько экземпляров своего приложения и ввести номер порта, как предложил Дмитрий…
4. добавьте свой метод в библиотеку классов, созданную 3 консольными приложениями, и щелкните правой кнопкой мыши решение > свойство > проект с несколькими запусками и запустите все 3 консольных приложения одновременно
Ответ №1:
Если нет, что я могу использовать в качестве альтернативы для достижения своей цели?
В качестве альтернативы вы можете использовать netcat для прослушивания определенных портов.