2013-10-28 63 views
3

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

回答

1

对不起,但不知道是否为时已晚。这个线程似乎很古老。

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

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

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

关键是了解管道。

+0

我正好在寻找的答案,类似的问题。你知道客户端管道是否可以配置为关闭而不会导致服务器管道关闭? –

0

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

在我的情况下,ReadFile()返回232“管道正在关闭”。 该信息无法引导。管道未关闭。 ReadFile()只是返回而没有读取任何数据。

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

如果您在Winerror.h中的错误代码,那就是“ERROR_NO_DATA”,这是远优于“正在关闭管道”