c# socket.Connected 连接状态判断不准确解决方案

  • 时间: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; 

}

  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部