0

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

客户端监听服务器发送的消息(while 循环)。

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

我看到了 3 个选项:

  1. 放入监听客户端循环pipeHhandle.IsClosed的条件while
  2. 捕获ObjectDisposedException希望它只会捕获通信结束而不捕获其他故障(此异常不给出异常errorCode)。
  3. 捕获System.ComponentModel.Win32Exception并检查异常errorCode(-2147467259)。在捕获代码中放置“if”是否标准?

尽管程序(没有catch)确实抛出了一个编号为109或-2147467259的异常,但我没有找到“结束管道”的任何特定异常,我很困惑。

谢谢你的帮助。

4

1 回答 1

0

知道对方死机的最常见方法是“回声”:偶尔(假设每 10 秒)客户端会发送一个“回声”——这意味着向服务器发出一个简单的请求以获取重播。如果连续 3 个回显(可能更多,取决于你)没有被服务器应答,客户端决定服务器已关闭并断开他的身边

于 2013-07-24T05:29:36.450 回答