诺禾\发送心跳包

本文介绍了TCP协议中的心跳保活机制,包括应用层自定义心跳包和TCP的KeepAlive机制。讨论了KeepAlive的默认设置及在特定场景下的不足,提出通过设置SO_KEEPALIVE属性来自定义检测时间和次数以适应不同需求。此外,还阐述了心跳包在长连接中的作用和断线判断流程,强调了心跳包在维持连接和故障检测中的重要性。
摘要由CSDN通过智能技术生成

发送心跳包,普通有两种办法:
办法一:应用层本人完成的心跳包
由应用程序本人发送心跳包来检测衔接能否正常,大致的办法是:效劳器在一个Timer事情中定时向客户端发送一个短小可辨识的数据包,然后启动一个低级别的线程,在该线程中不时检测客户端的反应,假如在一定时间内没有收到客户端的反应,即以为客户端曾经掉线;同样,假如客户端在一定时间内没有收到效劳器的心跳包,则以为衔接已丧失。
办法二:TCP的KeepAlive保活机制
由于思索到一个效劳器可能会衔接多个客户端,因而由用户在应用层本人完成心跳包,会招致代码较多且稍显复杂,而应用TCP/IP协议层为内置的KeepAlive功用来完成心跳功用则简单得多。不管是效劳端还是客户端,一方开启KeepAlive功用后,就会自动在规则时间内向对方发送心跳包,而另一方在收到心跳包后就会自动回复,以通知对方我依然在线。由于开启KeepAlive功用需求耗费额外的宽带和流量,所以TCP协议层默许并不开启KeepAlive功用,虽然这微乎其微,但在按流量计费的环境下增加了费用,再就是KeepAlive设置不合理时可能会由于短暂的网络动摇而断开安康的TCP衔接。且默许的KeepAlive超时需求7,200,000 MilliSeconds,即2小时,探测次数为5次。关于很多效劳端应用程序来说,2小时的闲暇时间太长。因而,我们需求手工开启KeepAlive功用并设置合理的KeepAlive超时参数。
TCP心跳.jpg
心跳包机制:
跳包之所以叫心跳包是由于:它像心跳一样每隔固定时间发一次,以此来通知效劳器,这个客户端还活着。事实上这是为了坚持长衔接,至于这个包的内容,是没有什么特别规则的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值