命名pipe道232pipe道正在closures

Hye我使用rpc的命名pipe道,当服务器得到一个exception写入pipe道(例如客户端突然closures)我赶上例外,调用断开命名pipe道,然后我尝试调用connectNamedPipe,我得到232:pipe道正在closures。 我的问题是如何解决这个问题,所以我得到一个exception后,再次开始监听pipe道

对不起,但不知道是不是太晚了。 这个线程似乎是相当古老的。

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

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

所以在客户端的管道突然关闭的情况下,服务器端的管道也是死的。 如果要重新连接,服务器需要提供另一个CreateNamedPipe函数来获取新连接,并要求客户端尝试连接。

关键是对管道的了解。

我遇到了同样的问题,但是和Leon有些不同。

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

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

如果您在winerror.h中检查错误代码,即“ERROR_NO_DATA”,这比“管道正在关闭”