请教了 iocp 下,如何设置socket 的recv超时
在写服务器程序,比较常见的一个问题是,当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 ,效率很低,希望能解决这个问题。
那么这个连接就会挂在那里。 假设这样的链接是恶意的, 那么他会大量消耗你的资源。
所以我希望进行一次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 ,效率很低,希望能解决这个问题。
...全文
相关推荐
C++ Socket超时设置[代码]
本文详细介绍了在C/C++中设置Socket非阻塞模式及接收超时时间的多种方法,包括使用fcntl函数设置非阻塞模式、通过select函数监听多个Socket并设置超时、以及利用setsockopt函数直接配置Socket超时选项。文章提供了丰富的代码示例,展示了每种方法的具体实现步骤和优缺点,帮助开发者根据实际应用场景选择最合适的解决方案。对于网络编程中常见的Socket超时问题,本文提供了全面且实用的技术指导。
TCP.rar_TCP程序_tcp_tcp api_visual c
一个简单的TCP聊天程序,使用winsock api实现。
利用windows中的套接字机制来设计的客户端/服务器通信
在本设计中,利用了Windows的套接字机制,并且通过套接字建立的基于客户端/服务器的通信方式,实现相互的通信
Visual C++ 网络资料
Visual C++ 网络资料 珍贵资料
winsocket网络聊天程序演示PPT
用于演示winsocket网络编程作业的PPT,主要帮助大家更好地理解winsocket实现的网络程序


网络编程
