我正在尝试学习如何执行命名管道。所以我在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为空,您可能想循环回去并再次尝试读取。 – user957902