首页
博客
专栏课程
下载
问答
社区
会员中心
论坛
代码
直播
Chrome 插件
能力认证
导航
全部
Ada助手
...
Ada助手
登录/注册
社区
网络编程
帖子详情
socket的recv阻塞可不可以设置阻塞超时时间?
cqzkui
2010-06-26 09:39:23
定义了一个socketClient
用recv接收数据,send发送,可是总是阻塞到那里,能否设置阻塞超时的时间,超时能返回,我的程序必须用阻塞方式,是商务合作方决定了的。
...全文
给本帖投票
8788
9
打赏
收藏
socket的recv阻塞可不可以设置阻塞超时时间?
定义了一个socketClient 用recv接收数据,send发送,可是总是阻塞到那里,能否设置阻塞超时的时间,超时能返回,我的程序必须用阻塞方式,是商务合作方决定了的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
求VC下一通信程序
>>
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
轻敲空格完成输入
显示为
卡片
标题
链接
打赏红包
khler
2010-10-27
打赏
举报
回复
一楼完全正解!
俺刚试了,Linux下、阻塞模式下的超时等待设置!
Eleven
2010-06-28
打赏
举报
回复
[Quote=引用 3 楼 cqzkui 的回复:]
试了,没起作用的
[/Quote]
socket(...);
->
WSASocket(AF_INET, SOCK_STREAM,IPPROTO_TCP,NULL,0,WSA_FLAG_OVERLAPPED);
然后setsockopt(SOCKET, SOL_SOCKET, SO_RCVTIMEO...);
setsockopt(SOCKET, SOL_SOCKET, SO_SNDTIMEO...);
xq830210
2010-06-28
打赏
举报
回复
开一个监听线程
周药师
2010-06-27
打赏
举报
回复
改成非阻塞吧
lijianli9
2010-06-27
打赏
举报
回复
用select的超时吧,不过用1楼的也可以,
fd_set fdRead;
timeval TimeOut;
TimeOut.tv_sec=0;
TimeOut.tv_usec=TIMEOUT;
FD_ZERO(&fdRead);
FD_SET(m_sock,&fdRead);
int ret=::select(0,&fdRead,NULL,NULL,&TimeOut);
这样select返回的时候可以根据ret的值判断时候有数据可读。ret>0可读,==0则是SOCKET_ERROR
jwybobo2007
2010-06-27
打赏
举报
回复
select,iocp模型带有超时处理,楼主可以怎么去看一下
另外你可以选择自己使用定时器控制,当然这样做的话需要注意很多问题,不推荐
cqzkui
2010-06-27
打赏
举报
回复
试了,没起作用的
hastings
2010-06-26
打赏
举报
回复
以下是来自于网上一篇文章中的摘录,它是这样写的:
int nNetTimeout=1000;//1秒,
//设置发送超时
setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO, (char *)&nNetTimeout,sizeof(int));
//设置接收超时
setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO, (char *)&nNetTimeout,sizeof(int));
这样做在 Linux环境下是不会产生效果的,须如下定义:struct timeval timeout = {3,0};
//设置发送超时
setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO, (char *)&timeout,sizeof(struct timeval));
//设置接收超时
setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO, (char *)&timeout,sizeof(struct timeval));
有两点注意就是:
1)recv ()的第四个参数需为MSG_WAITALL,在阻塞模式下不等到指定数目的数据不会返回,除非超时时间到。还要注意的是只要设置了接收超时,在没有MSG_WAITALL时也是有效的。说到底超时就是不让你的程序老在那儿等,到一定时间进行一次返回而已。
2)即使等待超时时间值未到,但对方已经关闭了socket, 则此时recv()会立即返回,并收到多少数据返回多少数据。
原文:http://blog.csdn.net/newger/archive /2008/05/19/2459113.aspx
socket
非
阻塞
超时
设置
socket
非
阻塞
超时
设置
可编译。VC6
socket
_
recv
函数使用心得.
这是一份关于
socket
_
recv
的文档,相信对想学习
socket
_
recv
的同学一定有很大的帮助!
Socket
C++ TCP
阻塞
\非
阻塞
服务器 客户端 开发
一个很详细的文档,基于c++ win
socket
的非
阻塞
服务器开发
C++
socket
阻塞
与非
阻塞
C++
Socket
编程示例;
阻塞
和非
阻塞
,涉及多线程编程,以及定时清除服务器连接资源;
关于
socket
阻塞
与非
阻塞
情况下的
recv
、send、read、write返回值.zip
关于
socket
阻塞
与非
阻塞
情况下的
recv
、send、read、write返回值.zip
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
积分榜
荣誉榜
原力榜
学习榜
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章
手机看
关注公众号
客服
返回
顶部