如何做到阻塞模型与非阻塞模型之间正确切换?
while(pSrv->bStopSrv)
{
SOCKET sockTemp = accept(pSrv->socketListen,(SOCKADDR*)&ClientAddr,&addr_length);
if(sockTemp == INVALID_SOCKET)
{
continue;
}
myStructure.Socket = sockTemp;
myStructure.hWnd = hServerWnd;
hThread = CreateThread(NULL,0,ClientThread,(LPVOID)&myStructure,0,&dwThreadId);
if (hThread)
{
CloseHandle(hThread);
}
pSrv->AddSocket(sockTemp);
}
ClientThread采用阻塞模型,而AddSocket(sockTemp)采用WSAEventSelect非阻塞
我最终的希望是进入ClientThread线程后变成阻塞模型,如果进入AddSocket就变成非阻塞模型。
阻塞模型与非阻塞模型之间可以正确切换,谢谢高手们了。。。。
[解决办法]
由非阻塞模式变为阻塞模式
1、调用WSAAsyncSelect(),取消所有的异步事件;
2、调用ioctlsocket(),将socket变为阻塞模式
[解决办法]
建议到MSDN上查查WSAAsyncSelect和ioctlsocket函数的详细说明.
[解决办法]