LINUX tcp server空闲超时的问题
保活定时器可以实现当套接字空闲的时候就发送心跳包这种机制我现在想,一个服务器连接多个客户端,当客户端连接上服务器但是一段时间内没有数据传输的话,就close掉这个sock...
保活定时器可以实现当套接字空闲的时候就发送心跳包这种机制
我现在想,一个服务器连接多个客户端,当客户端连接上服务器但是一段时间内没有数据传输的话,就close掉这个socket,而不是保持连接,该如何实现? 展开
我现在想,一个服务器连接多个客户端,当客户端连接上服务器但是一段时间内没有数据传输的话,就close掉这个socket,而不是保持连接,该如何实现? 展开
2个回答
展开全部
收到心跳报文,更新你客户端链表中的m_time
/* 例如10妙发送一次 */
用户->m_time = (time_t)time(NULL);// time_t m_time
用一个独立线程检测是否超时
while (1) {
sleep(你定时检测心跳的时间);
time_t local_time = (time_t)time(NULL);
/*遍历你的现有用户*/
/* 例如 你的超时时间为40,那么就是你至少4次没收到心跳更新可以肯定需要断开连接了*/
if (( local_time - 用户->m_time) > 超时时间){
close (用户->sockfd);
}
}
还有疑问么?
/* 例如10妙发送一次 */
用户->m_time = (time_t)time(NULL);// time_t m_time
用一个独立线程检测是否超时
while (1) {
sleep(你定时检测心跳的时间);
time_t local_time = (time_t)time(NULL);
/*遍历你的现有用户*/
/* 例如 你的超时时间为40,那么就是你至少4次没收到心跳更新可以肯定需要断开连接了*/
if (( local_time - 用户->m_time) > 超时时间){
close (用户->sockfd);
}
}
还有疑问么?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询