请教了 iocp 下,如何设置socket 的recv超时

im2web im2web 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在写服务器程序,比较常见的一个问题是,当socket 连上来以后,它可能继没有数据发送也没有接受。
那么这个连接就会挂在那里。 假设这样的链接是恶意的, 那么他会大量消耗你的资源。

所以我希望进行一次WSARecv 投递以后, 能在一定时间内超时, 那么我就可以根据情况进行处理了。

len = 10 * 1000;
Ret = setsockopt(Accept, SOL_SOCKET, SO_RCVTIMEO , &len , sizeof(len));
printf("Ret %d %d\n", Ret, WSAGetLastError());
代码很简单, 在accept 以后, 设置socket 的recv 超时, 如果不使用iocp, 就使用见得的recv 肯定
能在超时以后,获得一个结果。

但是在iocp的例子里面,我发现超时以后,无法GetQueuedCompletionStatus 获得消息,那么这样我就很被动了

现在我起了线程定时扫描所有的socket ,效率很低,希望能解决这个问题。
...全文

相关推荐

评论 49
收藏 已收藏
分享
返回顶部
im2web
网络编程 18,356 成员 64,161 内容