- 时间:2025-10-27 21:18 作者: 来源: 阅读:4
- 扫一扫,手机访问
摘要:进行非阻止、零字节的 Send 调用。如果该调用成功返回或引发 WAEWOULDBLOCK 错误代码 (10035),则该套接字依旧处于连接状态;否则,该套接字不再处于连接状态。socket.Connected 此属性在断网时并不会准确判断连接状态,可以通过发包测试连接状态.代码如下:// 通过发包检测socket连接是否存在 private bo
进行非阻止、零字节的 Send 调用。如果该调用成功返回或引发 WAEWOULDBLOCK 错误代码 (10035),则该套接字依旧处于连接状态;否则,该套接字不再处于连接状态。
socket.Connected 此属性在断网时并不会准确判断连接状态,可以通过发包测试连接状态.代码如下:
// 通过发包检测socket连接是否存在
private bool IsSocketConnected()
{
bool connectState = false;
bool blockingState = socket.Blocking;
try
{
byte[] temp = new byte[1];
socket.Blocking = false; socket.Send(temp, 1, 0);
connectState = true;
}
catch (SocketException e)
{
// 产生 10035 == WSAEWOULDBLOCK 错误,说明被阻止了,但是还是连接的
if (e.NativeErrorCode.Equals(10035))
{
connectState = true;
}
}
finally
{
socket.Blocking = blockingState;
}
return connectState;
}