采用WSASelectEvent模型,非阻塞套接字在调用send时返回0(任何大小的包均是如此,最大的包不超过1K),这种情况下工作线程FD_WRITE不会被触发,但服务器仍然能够收到了完整的数据,因此认为发送操作立即完成,并马上发送剩余数据,所有的数据都正常发送完成。
小弟查遍了互联网和资料,一直没有找到对这种情况的说明,msdn也没有提到这种情况,希望哪位比较熟悉这方面的大大能够解答一下,小弟不胜感激.套接字生成如下: m_hSocket = ::socket( AF_INET, SOCK_STREAM, 0 );
if( INVALID_SOCKET == m_hSocket )
return FALSE; m_hEventClose = ::CreateEvent( NULL, FALSE, FALSE, NULL );
m_hEventNetwork = ::WSACreateEvent();
if( SOCKET_ERROR == ::WSAEventSelect( m_hSocket, m_hEventNetwork, lEvent ) )
{
return FALSE;
}工作线程等待hEventNetwork,枚举网络事件等等这里就不多说了。