WaitForSingleObject第二次调用超时
写了一个socket通讯的程序
有启动 停止两个按钮。
点击启动按钮的时候绑定,监听完毕后,
调用WaitForSingleObject等待客户端发送信息,
第一次点击启动按钮的时候处理没问题,能正常收发消息,
但是点击停止按钮后(closesocket),
再点击启动按钮,
这时候WaitForSingleObject总是超时,为什么啊?
我的代码大体如下
//创建,绑定,监听
。。。。。。
//调用方法
int nRet=::WaitForSingleObject(wsaEvent,100000);//第二次总是超时
if(nRet==WAIT_FAILED)
{
MessageBox("failed wait for single object/n");
// break;
}
else if(nRet==WSA_WAIT_TIMEOUT)
{
MessageBox("超时!");
}
else
{
::ResetEvent(wsaEvent);
while(true&&pRun)
{
sockaddr_in si;
int nLen=sizeof(si);
SOCKET client=accept(m_Sock,(sockaddr*)&si,&nLen);
if(client==SOCKET_ERROR)
break;
pSOCKET_OBJ pSocket=GetSocketObj(client);
pSocket->addrRemote=si;
::WSAEventSelect(pSocket->s,pSocket->hEvent,FD_ACCEPT|FD_READ|FD_CLOSE);
AssignToFreeThread(pSocket);
printf("一新连接/n");
}
}