社区
网络编程
帖子详情
在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);
...全文
307
6
打赏
收藏
在TCP中如何让accept函数也能返回超时?
用如下方法不行: int nTimeOut = 1000; setsockopt(sockAccept, SOL_SOCKET, SO_RCVTIMEO, (char *)&nTimeOut, sizeof(nTimeOut)); // ... sockNew = accept(sockAccept, (struct sockaddr *)&addrRemote, &nAddrSize);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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试试看。
解析
TCP
服务器
中
的“幽灵连接”问题
本文分析了
TCP
服务器
中
“幽灵连接”的成因,指出内核
accept
返回
的连接可能已在后台断开。通过引入非阻塞I/O复用
函数
进行零
超时
状态检测,实现低成本二次验证,有效避免资源浪费和性能抖动,提升服务稳定性。
TCP
之延迟
ACCEPT
本文围绕
TCP
的延迟
ACCEPT
功能展开,介绍了其开启方式,即通过setsockopt系统调用的选项
TCP
_DEFER_
ACCEPT
控制,还阐述了服务端接收检查、发送
超时
以及客户端检查的相关逻辑,如服务端
超时
重传判断、客户端ACK延迟发送等,内核版本为4.15。
TCP
半连接与全连接队列及
accept
建立连接
本文详细介绍了
TCP
连接的管理,包括半连接队列(SYN队列)和全连接队列(
ACCEPT
队列)的工作原理。当服务器的SYN队列或
ACCEPT
队列满时,可能导致连接请求被丢弃或重试。服务器进程可能会使用独立线程处理
accept
以避免队列满的问题,而某些服务器如Nginx则采用非阻塞模式的套接字来处理连接和IO操作。
TCP
三次握手
超时
处理
本文深入探讨了
TCP
三次握手过程
中
SYN+ACK报文的
超时
重传机制,包括定时器的初始化、
超时
处理流程、RTT测量、延时
accept
功能以及定时器的清除过程。
TCP
_DEFER_
ACCEPT
本文深入探讨了
TCP
_DEFER_
ACCEPT
选项的工作原理,解释了其如何改变
TCP
三次握手过程,以及设置此选项后的连接行为。重点分析了内核处理机制和连接释放逻辑,包括重传次数和
超时
时间的计算。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章