如何设置超时处理?

afgkidy 2009-04-21 12:42:13
我用winsocket 写了一个服务器测试程序,请问如何为这个程序设置一个超时器,比如再recv 时候,如果在设定时间内没有取到任何数据,则就返回,而不必一直阻塞。
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinona 2009-04-21
  • 打赏
  • 举报
回复
这个一般要用到异步会比较好点,注册网络事件WSASelectEvent
利用WaitForSingleObject来等待,它的最后一个参数就是设置超时的
qgw_2000 2009-04-21
  • 打赏
  • 举报
回复
调用setsockopt设置SO_RCVTIMEO。
jackyjkchen 2009-04-21
  • 打赏
  • 举报
回复
线程同步函数
WaitForSingleObject可以做到,等待一定时间没有结束就继续
路人乙2019 2009-04-21
  • 打赏
  • 举报
回复
这个好办:

FD_ZERO(&stRead);
FD_SET(sock_bc,&stRead);
setimeout.tv_sec = 0;
setimeout.tv_usec = 0;
result = select(0,&stRead,NULL,NULL,&setimeout);

if(result > 0)
{
from_len = sizeof(SOCKADDR);
memset(&Recv_Pkt,0,sizeof(Recv_Pkt));
result = recvfrom(sock_bc,(char*)&Recv_Pkt,sizeof(Recv_Pkt),
0,(SOCKADDR*)&sck_from_bc,&from_len);
}
coldant 2009-04-21
  • 打赏
  • 举报
回复
up
afgkidy 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dinona 的回复:]
这个一般要用到异步会比较好点,注册网络事件WSASelectEvent
利用WaitForSingleObject来等待,它的最后一个参数就是设置超时的
[/Quote]

如何用的呢?不会
bragi523 2009-04-21
  • 打赏
  • 举报
回复
UP

[Quote=引用 2 楼 qgw_2000 的回复:]
调用setsockopt设置SO_RCVTIMEO。
[/Quote]
danjm536 2009-04-21
  • 打赏
  • 举报
回复
楼上大牛把该说的都说了,我说点什么好呢 -O-
na_he 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dinona 的回复:]
这个一般要用到异步会比较好点,注册网络事件WSASelectEvent
利用WaitForSingleObject来等待,它的最后一个参数就是设置超时的
[/Quote] 上面讲的不错哦

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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