GetLastError,不好使的话,就定时发送oob数据来检测

解决方案 »

  1.   

    非要client发送数据来检测么?
      

  2.   

    在底层,如果一个连接的socket被关闭了,则另一端的socket则
    会接收到数据通知,而此时如果你去recv(),则接收到的字节数为0。
    我的做法是,当需要检查socket是否关闭时,使用select调用,检查是否
    有数据可读,如果有,再检查读到的字节数是否为0。
      

  3.   

    MSDN上的解释:If the connection has been gracefully closed, the return value is zero.
      

  4.   

    MSG_DONTWAIT?这是什么参数?好象MSDN上都没有提到,请问你在哪里看到的?
      

  5.   

    recv会返回0,表示连接断开。所以每次recv后都应该检查返回值的。