套接字失败检测

套接字失败检测

问题描述:

我很想知道如何检测(在服务器端)当客户端计算机的网络电缆被拔出或硬重置时套接字连接失败。这对于c#中的客户端服务器项目很有用。套接字失败检测

目前我只能在客户端关闭应用程序并隐式套接字时才能检测套接字异常。

使用Google搜索了一下,我发现了FD_CLOSEIEventWSAAsyncSelect。这是否适用于我上面描述的情况?

这个答案请看:Instantly detect client disconnection from server socket

UPDATE

好吧,我想通了,你在说什么。如果客户端电缆被拔出或者网络发生任何问题,您无法在服务器上找到它。您将无法再获得该客户的任何响应。我只能看到这个答案的开始处的链接。

Ws2_32.dll(Winsock2)中有WSAEventSelect本地方法,但它仅用于检测本地计算机上的网络不可用性原因(应用程序在哪里运行)。

我看了一下System.Net.NetworkInformation.NetworkChange类的源代码,在那里你可以看到与WSAEventSelect有关的所有东西都是关于本地机器(在你的情况下是服务器)。

+0

MSDN文档指定Poll()不能用于检测网络电缆是否拔出或计算机是否非正常关闭。 – 2011-03-31 16:26:59

+0

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.poll.aspx – 2011-03-31 16:27:19

+0

请参阅UPDATE部分。 – HABJAN 2011-03-31 16:55:08