捕获服务器关闭管道时在客户端抛出的异常

时间:2013-07-24 05:24:17

标签: c# exception pipe disconnected

我检查了类似的问题,但我的问题似乎更简单明了: 在。之间有一个服务器和一个客户端以及一个命名管道。

客户端侦听服务器发送的消息(循环播放)。

如何检测到服务器关闭了管道,所以我也轻轻关闭了客户端?

我看到了3个选项:

  1. pipeHhandle.IsClosed置于侦听客户端循环的while条件
  2. Catch ObjectDisposedException希望它只能捕获通信结束而不是其他失败(此异常不会导致异常errorCode)。
  3. 抓住System.ComponentModel.Win32Exception并检查异常errorCode(-2147467259)。在catch代码中加上“if”是标准的吗?
  4. 我没有找到“结束管道”的任何特定异常,虽然程序(没有catch)确实抛出了一个数字为109或-2147467259的异常,我很困惑。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

了解对方已经死亡的最常见方式是“回声”: 偶尔(让我们说每10秒)客户端发送一个“回声” - 意味着向服务器发送一个简单的请求以进行重放。如果连续3个回声(可能更多,取决于你)没有服务器回答,客户端决定服务器已关闭并断开他的身边