Я прочел следующую статью для создания простого http-сервиса: Create a Simple Threaded HTTP Server with C# Прежде чем внедрять что-то, я в некоторой степени дилеммой.Http server - прослушивание ответов
У меня есть служба, отправляющая HTTP-запросы нескольким адресатам (с максимальным количеством максимальных адресов одновременно) и получение ответа от каждого адресата. Ответ короткий, только статус (200, если ok или какой-либо другой код), если запрос обработан правильно или нет.
В приведенной выше статье создается слушатель в цикле while, который заблокирован и прослушивает запросы.
23 private static void Listen()
24 {
25 listener.Start();
26 WriteLog("Listening On: " + port.ToString());
27
28 while (true)
29 {
30 WriteLog("Waiting for connection...");
31 TcpClient client = listener.AcceptTcpClient();
32 Thread listenThread
= new Thread(new ParameterizedThreadStart(ListenThread));
33 listenThread.Start(client);
34 }
35 }
Мне нужно отправить запросы на устройства и прислушаться к ответам от каждого. Возможно ли, что если я получу один ответ и до тех пор, пока цикл не вернется к команде listen (31), другой ответ проскользнет?
Если у меня есть ограниченное количество обрабатываемых HTTP-запросов, я должен создать слушателя для каждого или одного слушателя лучше?
«Слушайте ответ»? Обычно вы отправляете запрос и получаете ответ. Это не описание HttpListener, а просто простой старый HTTP-запрос. Почему оба конца нужно слушать? Вы говорите, что попали на удаленное устройство, а затем отправили свой собственный (отдельный) запрос обратно? Не лучше ли было бы ответить на инициирующий запрос? Мне кажется, что, по крайней мере, есть некоторая путаница в том, что вы на самом деле пытаетесь сделать. – spender
@spender я вижу. Возможно, я не думал об этом полностью. Моя цель - отправить информацию в длинный список пунктов назначения. Каждая передача информации может содержать небольшой запрос запроса или передачу файла в пункт назначения. Я хочу отправить одновременно не более X количество передач одновременно и ждать ответа. Значит, простой мой простой запрос может быть достаточным в моем случае? благодаря – Guy