问题:如何从等待状态中退出?

acange 2001-11-07 05:40:37
题:如何从等待状态中退出?


假设我有下面一段code, 我与server 端建立连接后向server 端发请求,
然后, 我等待server端给我回答(用ReadFromSocket(sock,Reply,1000))....

但是,如果server 端不给我回答,下面的程序就会一直等待下去. 这不是我想要的,
有何办法让它在比如30秒时间后自动退出这个等待状态...

我想可能要用到multithread, 但我不太懂, 欢迎大侠赐教了
40 分。。


------------------------------------------------
........//with C/C++

while (Reply[10]!='r')
{ memset(&Reply,0,sizeof(Reply));
errors = ReadFromSocket(sock,Reply,1000);
if(errors<=0)
{
printf("3 data recv() error!");
recvException();
exit(1);
}
}
---------------------------------------------------
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
acange 2001-11-10
  • 打赏
  • 举报
回复
thanks,
figured it out.
acange 2001-11-08
  • 打赏
  • 举报
回复
各位大侠, 能不能说的详细一点呀
如何用select?
zb_china 2001-11-07
  • 打赏
  • 举报
回复
select
lurenfu 2001-11-07
  • 打赏
  • 举报
回复
LINUX平台中可用如下方法实现读超时的操作:
1.用SIGALRM信号实现超时,具体是用系统调用alarm()和LIBC库函数sigsetjmp(), siglongjmp()以及信号处理函数在读socket前设定超时值,时间到就会产生SIGALRM信号
2.用SELECT来读,也可以实现超时控制,这样很方便
3。用SO_RCVTIMEO选项设定读超时,SO_SNDTIMEO选项可设定写超时,setsockopt
我想,后面两种方法应该可以应用在windows环境。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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