Я работал со следующим кодом, опубликованным в msdn:
http://msdn.microsoft.com/en-us/library/fx6588te.aspx
Я понимаю, что серверное приложение не заблокировано, пока приложение ожидает новых клиентов.
Однако может ли это приложение (или даже сокеты) обрабатывать несколько одновременных запросов?
-
Что произойдет, если клиент A и B будут подключены одновременно?
-
Если клиент A подключается, и обработка его запроса занимает 5 секунд, если клиент B подключается через секунду, он должен дождаться завершения действия клиента A до того, как его обработка начнется?
-
Или клиентские запросы A и клиента B будут обрабатываться одновременно?
Я провел некоторое тестирование с этим, поставив команды Thread.Sleep(n) между данными приема/отправки в коде слушателя сокета. Затем я могу отправить несколько запросов в сокет, и они, похоже, будут обработаны. Однако сокет всегда обрабатывает их по одному и тому же идентификатору потока, что заставляет меня поверить, что он фактически не происходит одновременно.
Особенно учитывая описание microsoft, которое это приложение просто не блокирует, ожидая новых соединений - означает ли это, что он может обрабатывать параллельные соединения?