Говорят, что сервер создал именованный канал «myTestPipe». Сколько клиентов может подключиться к «myTestPipe»? Из того, что я читал в Интернете, кажется, что только один клиент может, но хотел убедиться.Число клиентов, которые могут подключаться к именованной трубе
Если только один, то лучше использовать блокировку WaitForConnection() вместо метода Asunchronus BeginWaitForConnection(), поскольку сервер будет ждать, пока клиентский процесс подключится, а затем сделает сообщение ?! (нет необходимости беспокоиться о том, что другие клиенты подключаются)
Спасибо за ваш ответ. У меня есть вопрос: я реализую сервер, который получает двоичные файлы, которые отправляются NamedPipeClients через именованный канал. Предположим, что у меня многопоточный NamedPipeClient, где я могу создать несколько потоков для отправки файлов одновременно. Как бы серверу было возможно отличить исходный клиент, который фактически отправил эти байты? Возможно, мой вопрос должен состоять в следующем: когда несколько клиентов записывают данные в трубу, они перекрываются с другими людьми таким образом, что вы не можете сказать, кто их отправил? надеюсь, что это объясняется хорошо! еще раз спасибо – Derar
Здесь на самом деле есть пара различных вариантов, в том числе использование перекрывающихся операций ввода-вывода, многопоточности или завершения. MSDN имеет хорошую документацию (включая все 3 варианта) обработки нескольких клиентских подключений с одного сервера здесь: http://msdn.microsoft.com/en-us/library/aa365594%28VS.85%29.aspx –
Важно в приведенном выше, иметь в виду, что один экземпляр канала сервера может обрабатывать только один клиент. Данный _named pipe_ может обрабатывать несколько соединений, но каждое из этих соединений по-прежнему нужно ждать и обрабатывать отдельным экземпляром сервера. Как только экземпляр сервера подключен, он не может использоваться для дополнительных подключений до тех пор, пока текущее соединение не будет отключено, и серверный канал может ждать другого. Ответ выше соответствует фактам, но не делает их ясными из-за путаницы между именованным каналом и объектом серверного канала. –