365平台-beat365下载地址-BET体育365投注官网

365平台

Socket连接心跳包的机制总结

Socket连接心跳包的机制总结

文章目录

Socket连接心跳包的机制总结心跳包的由来心跳包的作用心跳包由服务端还是客户端发送?

Socket连接心跳包的机制总结

心跳包的由来

心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。

在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可能也不是那么好处理。一般,如果只是用于保活还是可以的。

在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候,就需要我们的心跳包了,用于维持长连接,保活。

总的来说,心跳包主要也就是用于长连接的保活和断线处理。一般的应用下,判定时间在30-40秒比较不错。如果实在要求高,那就在6-9秒。

心跳包的作用

长连接的保活和断线处理。

心跳包由服务端还是客户端发送?

这里就存在这样的一个疑问?是由服务端还是客户端发送心跳包? 心跳包让哪一方来发依赖于是否需要感知对方断开了通信连接。个人意见,如果是较封闭的系统(需要严格权限认证的环境),同时连接数相对较小的环境下可以考虑服务端发送心跳包。 较为开放的系统,或连接数较多的环境(如互联网应用)应考虑客户端发心跳包。

客户端发心跳包举例:

第一种情况:客户端判断连接情况 心跳检测步骤: 1 客户端每隔一个时间间隔发生一个探测包给服务器 2 客户端发包时启动一个超时定时器 3 服务器端接收到检测包,应该回应一个包 4 如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器 5 如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了

第二种情况:服务端判断连接情况 1、服务端与客户端建立连接时启动一个超时定时器。 2、客户端每隔一个时间间隔发生一个探测包给服务器 3、如果服务端收到客户端的数据包或者探测包,则说明客户端正常,定时器重置。 4、如果服务端的超时定时器超时,依然没有收到探测包或者数据包,则说明客户端挂了。

服务端发心跳包举例也可以照样字给出,这里就不罗列了。

← 设置开机启动【最小化后台运行】 退的五笔编码和拆分图解 →

相关阅读

世界杯彩票赔率倍数,世界杯彩票一注赢多少

本文目录一览: 1、2022世界杯3:0多少倍 2、2022世界杯体彩倍数怎么算的 3、世界杯彩票的倍数是什么意思啊 1、2022世界杯3:0多少倍 1、倍。国际足

📅 06-27 🌿 BET体育365投注官网

中科曙光交流讨论

首页 题库 公司真题 专项练习 面试题库 在线编程 面试 面试经验 AI 模拟面试 简历 求职 学习 基础学习课 实战项目课 求职辅导课 专栏&文章 竞

📅 07-28 🌿 BET体育365投注官网

世界上最豪华的十大婚礼

世界上最豪华的十大婚礼 有的婚礼昂贵奢华和排场远远超出了自己的想象,有的婚礼排场就算你有钱,恐怕都买不到的。你知道世界上最豪华的

📅 07-13 🌿 BET体育365投注官网