在我正在开发的应用程序中,我需要处理套接字超时与常规套接字异常不同。问题是许多不同的问题导致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"
这个问题有一个普遍而具体的部分:
以下示例代码......
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..
}
}
我想不时地停止“等待新数据”,这样我的工作线程就可以看看它是否被要求优雅地关闭 - 我宁愿避免套接字的跨线程终止提供这种机制。
答案 0 :(得分:8)
当然是! SocketException
中有更多描述性字段,您不应该执行字符串比较。 http://msdn.microsoft.com/library/system.net.sockets.socketexception_members.aspx,特别是:
答案 1 :(得分:2)
例外是与文化相关的,我有“德语”异常消息。 使用SocketErrorCode。