gpt4 book ai didi

c# - 命名管道服务器和客户端 - 无消息

转载 作者:行者123 更新时间:2023-11-30 15:06:33 26 4
gpt4 key购买 nike

我正在尝试学习如何使用命名管道。所以我在 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: 后没有任何内容,因此数据实际上并没有从服务器传输到客户端进行显示。我已经尝试交换管道方向并让客户端将数据发送到服务器,结果相同。

为什么在这个例子中屏幕上没有打印出数据?我错过了什么?

谢谢!

最佳答案

如 L.B 所说,您必须刷新 StreamWriter。但是使用 using 模式可以防止这样的错误:

using (var p = new NamedPipeServerStream("test3", PipeDirection.Out))
{
p.WaitForConnection();
Console.WriteLine("Connected!");
using (var writer = new StreamWriter(p))
{
writer.WriteLine("Hello!");
writer.Flush();
}
p.WaitForPipeDrain();
p.Close();
}

在上面的代码中,即使省略了 Flush()Close(),一切都会按预期进行(因为当对象被删除时也会执行这些操作)弃)。此外,如果抛出任何异常,所有内容仍将被正确清理。

关于c# - 命名管道服务器和客户端 - 无消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7692259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com