tcp连接在客户端怎么判断服务器是不是已经断掉?有函数可以直接调用吗?

解决方案 »

  1.   

    CAsyncSocket::Receive
    virtual int Receive( void* lpBuf, int nBufLen, int nFlags = 0 );如果返回值为0,表示服务器端已关闭
      

  2.   

    如果在TCP连接上收到对方发来的RST包,Receive也可能返回一个错误(异常)。这时连接也已经断掉。
    因此,凡是接收出错或者返回的字节数为0均说明服务器端已断开
      

  3.   

    服务器端若断开,那么客户端对其进行的操作(如send,recv...)都会返回一个特定的值,
    由这个值可以判断