社区
网络编程
帖子详情
在TCP中如何让accept函数也能返回超时?
fenex
2003-10-30 01:03:20
用如下方法不行:
int nTimeOut = 1000;
setsockopt(sockAccept, SOL_SOCKET, SO_RCVTIMEO, (char *)&nTimeOut, sizeof(nTimeOut));
// ...
sockNew = accept(sockAccept, (struct sockaddr *)&addrRemote, &nAddrSize);
...全文
272
6
打赏
收藏
在TCP中如何让accept函数也能返回超时?
用如下方法不行: int nTimeOut = 1000; setsockopt(sockAccept, SOL_SOCKET, SO_RCVTIMEO, (char *)&nTimeOut, sizeof(nTimeOut)); // ... sockNew = accept(sockAccept, (struct sockaddr *)&addrRemote, &nAddrSize);
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fenex
2003-11-02
打赏
举报
回复
谢谢!
我现在就是这样做的。
bluebohe
2003-11-01
打赏
举报
回复
建议你在其他线程中CancelBlockingCall掉这个Accept
fenex
2003-11-01
打赏
举报
回复
没人知道吗?
fenex
2003-10-30
打赏
举报
回复
select 只能返回指定socket的状态,如果select返回超时如何处理比较好呢?
我现在是用closesocket关闭它,accept就会返回了,不知有什么更好的方法?
xiao_potato
2003-10-30
打赏
举报
回复
setsockopt(sockAccept, SOL_SOCKET, SO_RCVTIMEO, (char *)&nTimeOut, sizeof(nTimeOut));//设置Recv/Recvfrom接收超时吧
用select可以实现
sevencat
2003-10-30
打赏
举报
回复
accept对此调用无用。
用select试试看。
完整串口通信程序Vc++源代码
完整串口通信程序Vc++源代码
tcp
中
的socket实现的
超时
接受
为什么会有
超时
接受? 一般地,我们经常习惯使用阻塞IO。 当没有数据到达的时候,它就会一直阻塞,有数据的时候就会读取。 因为有可能出现,就是一直等待,等不到结果还继续等待。所以
超时
接受可以解决。 如何实现
超时
控制? 1、实现多路复用 2、 设置套接字的属性为
超时
接收。 方法1: select
函数
的作用是监听集合
中
哪个元素有数据到达 select(xx,xxx,xx,xx,NULL ); -> 无限等待集合
中
的数据 -> -> 如果集合
中
的文件描述符有数据到达,则
函数
就会
返回
。 -&g
accept
与connect的
超时
设置
connect
超时
: 我们都知道,connect对应与三次握手
中
的第一次发送SYN,而对待服务器的ACK,如果服务器没有启动服务器,有些机器会立刻
返回
一个RST表示服务器拒绝,从而connect失败,但又些服务器为了防止攻击,什么也不发送,直至客户端connect
超时
,而这一时间又75s,对于客户端来说是不能接收的。所以需要设置connect的
超时
时间。 利用select设置connect的超
tcp
服务器
accept
的作用,
TCP
_DEFER_
ACCEPT
1. 设置
TCP
_DEFER_
ACCEPT
int val = 10;// time_outif (setsockopt(sock_descriptor, IPPROTO_
TCP
,
TCP
_DEFER_
ACCEPT
, &val, sizeof(val))== -1){perror("setsockopt");exit(1);}2.
TCP
_DEFER_
ACCEPT
的效果 正常的
tcp
三次握...
TCP
服务端
accept
()
函数
实现非阻塞
1、首先使用fcntl
函数
设置socket为非阻塞 sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_
TCP
); int flags = fcntl(sockfd, F_GETFL, 0); fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); bind()...... listen()...... 2、再使用select
函数
设置
超时
FD_...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章