管道232被命名为管道

时间:2013-10-28 13:50:07

标签: windows named-pipes

Hye我正在为rpc使用命名管道,当服务器获取写入管道的异常时(例如客户端突然关闭)我捕获异常,调用disconnect命名管道然后我尝试调用connectNamedPipe,I得到232:管道正在关闭。我的问题是如何解决这个问题,所以在我得到异常后再次开始监听管道

2 个答案:

答案 0 :(得分:3)

抱歉,但不知道是否为时已晚。这个帖子似乎很老了。

但只是为了那些像我这样谷歌这个问题的人的好处。

线程启动器面临的问题很简单,客户端在断开连接后无法重新连接相同的管道!

因此,如果客户端的管道突然关闭,服务器端的管道也会死机。如果要重新连接,服务器需要提供另一个CreateNamedPipe函数来获取新连接并请求客户端尝试。

关键是对管道的理解。

答案 1 :(得分:0)

我遇到了同样的问题,但与Leon有点不同。

在我的情况下,ReadFile()返回232"管道正在关闭"。 消息是错过领先的。管道没有关闭。 ReadFile()只是在没有任何数据读取的情况下返回。

由于我创建的管道是非阻塞的,因此ReadFile()在没有数据的情况下立即返回是完全合理的。

如果你检查winerror.h中的错误代码,那就是" ERROR_NO_DATA",这比"管道正在关闭"