2013-10-28 65 views
3

Hye我正在使用rpc的命名管道,當服務器得到寫入管道的異常(例如客戶端突然關閉)我捕獲異常,調用disconnect命名管道和然後我嘗試調用connectNamedPipe,我得到232:管道正在關閉。我的問題是如何解決這個問題,所以在我得到異常後,再次開始在管道上聆聽命名管道232管道正在關閉

回答

1

對不起,但不知道是否爲時已晚。這個線程似乎很古老。

但只是爲了那些像我這樣的谷歌這個問題的人的好處。

線程啓動器面臨的問題很簡單,客戶端在連接斷開後無法重新連接到同一管道!

因此,如果客戶端的管道突然關閉,服務器端的管道也會死機。如果要重新連接,服務器需要提供另一個CreateNamedPipe函數來獲取新連接並要求客戶端進行嘗試。

關鍵是瞭解管道。

+0

我正好在尋找的答案,類似的問題。你知道客戶端管道是否可以配置爲關閉而不會導致服務器管道關閉? –

0

我遇到了同樣的問題,但與Leon有點不同。

在我的情況下,ReadFile()返回232「管道正在關閉」。 該信息無法引導。管道未關閉。 ReadFile()只是返回而沒有讀取任何數據。

由於我創建的管道是非阻塞的,因此ReadFile()在沒有數據的情況下立即返回是非常有意義的。

如果您在Winerror.h中的錯誤代碼,那就是「ERROR_NO_DATA」,這是遠優於「正在關閉管道」