2013-07-24 48 views
0

我檢查了類似的問題,但我的問題似乎更簡單直接: 有一個服務器和一個客戶端以及一個命名管道。當服務器關閉管道時,捕獲客戶端拋出的異常

客戶端偵聽服務器發送的消息(while循環)。

如何檢測服務器是否關閉了管道,因此我也輕輕關閉了客戶端?

我看到三個選項:

  1. pipeHhandle.IsClosed在聆聽客戶循環
  2. 趕上ObjectDisposedException希望它會趕上通信的唯一終點,而不是等故障的while條件(此異常不給例外errorCode)。
  3. Catch System.ComponentModel.Win32Exception並檢查例外errorCode(-2147467259)。在catch代碼中放置「if」是否標準?

我沒有找到「端管」雖然程序(不捕)任何具體的異常並拋出一個異常,其數量是109或-2147467259,我很困惑。

感謝您的任何幫助。

回答

0

知道對方死亡的最常見方式是「回聲」: 曾經有一段時間(比方說,每隔10秒)客戶端發送一個「回聲」 - 意味着一個簡單的請求到服務器得到重播。如果連續3個回顯(可能更多,取決於你)未被服務器回答,客戶端會判定服務器已關閉並斷開他的側面

相關問題