只有一个客户端可以连接到命名管道

Sha*_*les 7 c# asp.net-3.5 named-pipes

我目前正在使用ASP.NET 3.5和C#学习Windows中的命名管道.我写了一个小型服务器程序,它创建了一个命名管道:

using (NamedPipeServerStream pipeStream = new NamedPipeServerStream(pipeName))
{
  pipeStream.WaitForConnection();
  // do sth.
}
Run Code Online (Sandbox Code Playgroud)

和一个打开管道的客户端应用程序如下:

using (NamedPipeClientStream pipeStream = new NamedPipeClientStream(pipeName))
{ 
  pipeStream.Connect();
  // do sth.
}
Run Code Online (Sandbox Code Playgroud)

只要只有一个客户端连接到管道,这就很有效.它既可以读写,也可以写入.如果我尝试连接第二个客户端,代码永远不会超过该行

pipeStream.Connect();
Run Code Online (Sandbox Code Playgroud)

服务器和所有客户端都在同一台计算机上运行.有任何想法吗?

非常感谢你提前!

Sha*_*les 1

感谢您的快速帮助。

我已经在单独的线程中处理了实际的处理,但忘记提及这一点。但一位同事发现了这个问题:

我有一个 StreamReader,它被服务器端发布的 NamedPipeServerStream-using 块中的另一个 using 块包围。

当该块完成关闭 StreamReader 时,它还由于某种原因断开了 NamedPipeServerStream 的连接。另外,我没有将 pipelineStream.WaitForConnection() 包含在循环中。