【发布时间】:2011-10-07 19:55:27
【问题描述】:
我正在尝试学习如何使用命名管道。所以我在 LinqPad 中创建了一个服务器和客户端。
这是我的服务器:
var p = new NamedPipeServerStream("test3", PipeDirection.Out);
p.WaitForConnection();
Console.WriteLine("Connected!");
new StreamWriter(p).WriteLine("Hello!");
p.Flush();
p.WaitForPipeDrain();
p.Close();
这是我的客户:
var p = new NamedPipeClientStream(".", "test3", PipeDirection.In);
p.Connect();
var s = new StreamReader(p).ReadLine();
Console.Write("Message: " + s);
p.Close();
我运行服务器,然后是客户端,我看到“已连接!”出现在服务器上,因此它连接正确。但是,客户端始终显示Message:,其后没有任何内容,因此数据实际上并没有从服务器传输到客户端以进行显示。我已经尝试过交换管道方向并让客户端以相同的结果向服务器发送数据。
在这个例子中,为什么屏幕上没有打印出数据?我错过了什么?
谢谢!
【问题讨论】:
-
根据 StreamReader.ReadLine 文档,如果到达流的末尾,它将返回 null。可能是在您执行 ReadLine 时,管道中没有数据并且流为空。如果 s 为空,您可能需要循环并再次尝试读取。
标签: c# named-pipes