如何判断socket已经关闭

2024-11-15 12:49:37
推荐回答(2个)
回答(1):

采用CAsyncSocket::AsyncSelect(FD_CLOSE),
则在远程socket关闭的时候,会触发OnClose消息。
在OnClose里面填写
if(CAsyncSocket::m_hSocket!=INVALID_SOCKET)
{
CAsyncSocket::Close();
}
CAsyncSocket::OnClose(nErrorCode);
当远程socket关闭时,自动将自己关闭。
要判断远程是否关闭,直接判断自己的
CAsyncSocket::m_hSocket是否为INVALID_SOCKET即可。

回答(2):

看 recv 是不是返回 0 或者 负数。