我检查了类似的问题,但我的问题似乎更简单明了: 在。之间有一个服务器和一个客户端以及一个命名管道。
客户端侦听服务器发送的消息(循环播放)。
如何检测到服务器关闭了管道,所以我也轻轻关闭了客户端?
我看到了3个选项:
pipeHhandle.IsClosed
置于侦听客户端循环的while
条件ObjectDisposedException
希望它只能捕获通信结束而不是其他失败(此异常不会导致异常errorCode
)。System.ComponentModel.Win32Exception
并检查异常errorCode
(-2147467259)。在catch代码中加上“if”是标准的吗?我没有找到“结束管道”的任何特定异常,虽然程序(没有catch)确实抛出了一个数字为109或-2147467259的异常,我很困惑。
感谢您的帮助。
答案 0 :(得分:0)
了解对方已经死亡的最常见方式是“回声”: 偶尔(让我们说每10秒)客户端发送一个“回声” - 意味着向服务器发送一个简单的请求以进行重放。如果连续3个回声(可能更多,取决于你)没有服务器回答,客户端决定服务器已关闭并断开他的身边