欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > TCP保活功能

TCP保活功能

2025/9/22 17:57:55 来源:https://blog.csdn.net/m0_73551869/article/details/147381693  浏览:    关键词:TCP保活功能

一、聊天服务器心跳机制

引出一个问题:聊天服务器中,如果网络拥塞严重,ChatServer如何感知客户端在线还是掉线了?

答:基于长连接的业务 -> 心跳保持机制!!!

首先要知道:同一台机器上的不同协议,可以各自独立使用相同的端口号!

现在把ChatServer服务器分成两个部分:TCP:8080做通用业务处理,UDP:8080做心跳业务处理

在ChatServer端会给connect成功的client分配一个心跳计数器,并且ChatServer启动心跳计时器

只要启动心跳计时器,每过1秒就把所有client的心跳计数器+1;与此同时,客户端每隔1秒也会给ChatServer发送一个heartbeat信息

只要ChatServer收到了对应client的heartbeat信息,就把心跳计数-1。正常来说心跳计数器会在-1、0、1之间摆动;如果心跳计数超过5,就判定client已经掉线,拆除这个client的所有连接和其他资源

图图u突突突突突u凸凸凸凸

二、TCP协议的保活功能

和上述功能类似的就是TCP的keep-alive功能了(保活功能)

TCP的keep-alive功能默认是关闭的,需要手动开启:setsockopt -> SO_KEEPALIVE

chq@iZn4a0ov5mlzjl9h6qyhxkZ:~$ sysctl -a | grep keepalive(查看相关参数)

net.ipv4.tcp_keepalive_intvl = 75 # 如果探测没有相应,延迟75秒继续发送探测包

net.ipv4.tcp_keepalive_probes = 9 # 最多探测9次,如果都没有响应就拆除连接

net.ipv4.tcp_keepalive_time = 7200 # 默认每隔2个小时,发送一个空报文段,探测对方是否在线

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词