WaitForSingleObject第二次调用超时

sdu_hanson 2014-04-21 01:56:11
写了一个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");
}
}


...全文
240 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-04-21
  • 打赏
  • 举报
回复
7楼可能是正解!
sdu_hanson 2014-04-21
  • 打赏
  • 举报
回复
引用 8 楼 buyong 的回复:
看wsaEvent在停止按钮操作中有什么变化
停止按钮里没有wsaEvent进行操作。 启动按钮里,每点击一次,就回用wsaCreateevent创建一个wsaEvent临时变量。 然后会调用resetevent方法进行重置。 我要是创建个全局的变量,貌似也有问题
sdu_hanson 2014-04-21
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
[quote=引用 5 楼 sdu_hanson 的回复:] [quote=引用 4 楼 zhao4zhong1 的回复:] 如果你精读完《Windows核心编程》这本书还不明白,当我没说。
我精度完这本书,黄花菜都凉了, 这不是着急要结果么。。。[/quote] 那就精读一下 《windows核心编程》\第7章 线程的调度、优先级和亲缘性.PDF 《windows核心编程》\第8章 用户方式中线程的同步.PDF 《windows核心编程》\第9章 线程与内核对象的同步.PDF [/quote] 恩,谢了 ~~~
buyong 2014-04-21
  • 打赏
  • 举报
回复
看wsaEvent在停止按钮操作中有什么变化
赵4老师 2014-04-21
  • 打赏
  • 举报
回复
参考MSDN98\SAMPLES\VC98\SDK\NETDS\WINSOCK\OVERLAP\*.* ? http://bbs.csdn.net/topics/390374955
赵4老师 2014-04-21
  • 打赏
  • 举报
回复
引用 5 楼 sdu_hanson 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:] 如果你精读完《Windows核心编程》这本书还不明白,当我没说。
我精度完这本书,黄花菜都凉了, 这不是着急要结果么。。。[/quote] 那就精读一下 《windows核心编程》\第7章 线程的调度、优先级和亲缘性.PDF 《windows核心编程》\第8章 用户方式中线程的同步.PDF 《windows核心编程》\第9章 线程与内核对象的同步.PDF
sdu_hanson 2014-04-21
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
如果你精读完《Windows核心编程》这本书还不明白,当我没说。
我精度完这本书,黄花菜都凉了, 这不是着急要结果么。。。
赵4老师 2014-04-21
  • 打赏
  • 举报
回复
如果你精读完《Windows核心编程》这本书还不明白,当我没说。
sdu_hanson 2014-04-21
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
《Windows核心编程》
................................
赵4老师 2014-04-21
  • 打赏
  • 举报
回复
《Windows核心编程》
sdu_hanson 2014-04-21
  • 打赏
  • 举报
回复
顶顶~~~~~~

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧