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

本文关键字:客户端 异常 服务器 管道 | 更新日期: 2023-09-27 18:24:31

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

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

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

我看到3个选项:

  1. pipeHhandle.IsClosed置于侦听客户端循环的while条件中
  2. 捕获ObjectDisposedException,希望它只捕获通信结束而不捕获其他故障(此异常不会产生异常errorCode
  3. 捕获System.ComponentModel.Win32Exception并在异常errorCode(-2147467259)内部进行检查。在catch代码中加一个"if"是标准的吗

虽然这个程序(没有catch)确实抛出了一个编号为109或-2147467259的异常,但我没有发现"结束管道"有任何特定的异常,我很困惑。

谢谢你的帮助。

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

知道对方已经死亡的最常见方法是"回声":每隔一段时间(假设每10秒),客户端会发送一个"echo",这意味着向服务器发送一个简单的请求以获得重播。如果一行中有3个echo(可能更多,取决于您)没有得到服务器的响应,则客户端决定服务器已关闭,并断开其侧