捕获服务器关闭管道时在客户端引发的异常
本文关键字:客户端 异常 服务器 管道 | 更新日期: 2023-09-27 18:24:31
我检查了类似的问题,但我的问题似乎更简单明了:有一个服务器和一个客户端,两者之间有一个命名管道。
客户端侦听服务器发送的消息(while循环)。
我如何检测到服务器关闭了管道,所以我也轻轻地关闭了客户端?
我看到3个选项:
- 将
pipeHhandle.IsClosed
置于侦听客户端循环的while
条件中 - 捕获
ObjectDisposedException
,希望它只捕获通信结束而不捕获其他故障(此异常不会产生异常errorCode
) - 捕获
System.ComponentModel.Win32Exception
并在异常errorCode
(-2147467259)内部进行检查。在catch代码中加一个"if"是标准的吗
虽然这个程序(没有catch)确实抛出了一个编号为109或-2147467259的异常,但我没有发现"结束管道"有任何特定的异常,我很困惑。
谢谢你的帮助。
知道对方已经死亡的最常见方法是"回声":每隔一段时间(假设每10秒),客户端会发送一个"echo",这意味着向服务器发送一个简单的请求以获得重播。如果一行中有3个echo(可能更多,取决于您)没有得到服务器的响应,则客户端决定服务器已关闭,并断开其侧