2010-04-08 51 views
2

在我正在開發的應用程序中,我需要處理與普通套接字異常不同的套接字超時。問題是許多不同的問題導致SocketException,我需要知道原因是什麼。是一個例外文化獨立的「消息」嗎?

有報道沒有內部異常,所以我有工作的唯一信息就是消息:

"A connection attempt failed because the connected party did not 
properly respond after a period of time, or established connection 
failed because connected host has failed to respond" 

這個問題有一個全面和具體的部分:

  1. 是可以接受的基於異常的文本表示寫入條件邏輯?
  2. 有沒有辦法避免需要異常處理?

示例代碼如下...

try 
{ 
    IPEndPoint endPoint = null; 
    client.Client.ReceiveTimeout = 1000; 
    bytes = client.Receive(ref endPoint); 
} 
catch(SocketException se) 
{ 
    if (se.Message.Contains("did not properly respond after a period of time")) 
    { 
     // Handle timeout differently.. 
    } 
} 

我想停止「等待新的數據」現在每一次,讓我的工作線程可以看看,看看它是否已經要求優雅地關閉 - 我寧願避免套接字的交叉線程終止來提供這種機制。

回答

2

例外的是文化有關,我有 「德」 異常消息。 使用SocketErrorCode。