使用WSAAsynSelect()模型,在FD_READ事件的时候recv()的返回值讨论?
do
{
int nRecvStat = recv( m_sockID, pchBuf, nBufLen, 0 );
int nErrorCode = ::WSAGetLastError();
}while(nRecvStat > 0);
nRecvStat > 0 自然就是实际从SOCKET缓冲区中读出的数据,现在我们讨论nRecvStat
1. 这里什么情况下nRecvStat == 0?
2. 什么情况下nRecvStat < 0;
3. nRecvStat < 0 的情况下,nErrorCode == WSAEWOULDBLOCK(10035)号错误又是什么情况下发生的?这个大侠们好好给解释下。
4. nRecvStat < 0 的情况下,nErrorCode == WSAEMSGSIZE(10040)号错误又是什么情况下发生的?
5. 大家补充!
PS: 一定要记得是 WSAAsynSelect()模型。