System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及传输控制协议,具体涉及一种通过智能心跳维持tcp长连接的方法及装置。
技术介绍
1、在现代计算机网络中,传输控制协议(transmission control protocol,简称tcp)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在多种应用场景下,例如即时通讯、在线游戏以及股票交易等,需要使用tcp长连接来确保数据的实时传输和较低的延迟。
2、为了维持这种长连接,通常使用心跳机制。心跳是一个小的数据包,定期在连接的两端发送,以确认连接仍然是活动的并检查其健康状态。如果在预定的时间内未收到心跳响应,连接可能被认为是中断的,然后会重新建立连接。
3、然而,传统的心跳机制通常是固定间隔发送的,这可能会在网络条件不稳定或不需要持续心跳的情况下导致不必要的网络流量。例如,如果一个客户端和服务器之间的连接非常稳定,并且没有数据传输,持续的固定间隔心跳可能是多余的。相反,如果网络条件频繁变化,固定的心跳间隔可能不足以及时检测到连接中断。
4、综上可知,传统的心跳机制可能不适合所有的应用场景,特别是在需要高效、实时和灵活的网络连接中。因此,本领域技术人员亟需寻找一种更加智能的方法来维持tcp长连接。
技术实现思路
1、为此,本申请提供一种通过智能心跳维持tcp长连接的方法及装置,以解决现有技术存在的心跳机制不能根据网络条件和连接稳定性动态调整心跳频率的问题。
2、为了实现上述目的,本申请提供如下技术方案:
3、第一
4、向服务器发送自己环境相关信息;所述服务器根据所述环境相关信息计算心跳计时的大间隔时间,并推荐给客户端;
5、接收服务器推荐的心跳计时的大间隔时间;
6、根据tcp长连接是否为本地启动的第一次连接以及服务器推荐的心跳计时的大间隔时间确定初始心跳计时器超时时间;
7、根据初始心跳计时器超时时间设置计时器;
8、判断计数器在超时前是否发送新的实际数据;若是,则取消当前心跳计时器,并重新设置新的计时器;若否,则判断计时器在超时前是否连接中断;
9、若中断,则确定是否需要重新发起tcp长连接;若未中断且达到计时器超时时间,则向服务器发送心跳包,并启动心跳回复计时器;
10、判断在心跳回复计时器超时前是否收到服务器的回复心跳;若收到服务器的回复心跳,则将当前计时器使用的超时时间更新为成功心跳时间,并计算下次使用的计时器超时时间,使用计算出的计时器超时时间启动下一次的心跳计时器;若未收到服务器的回复心跳,则将当前计时器使用的超时时间更新为失败心跳时间,并计算下次使用的计时器超时时间,重新发起tcp长连接。
11、作为优选,所述根据tcp长连接是否为本地启动的第一次连接以及服务器推荐的心跳计时的大间隔时间确定初始心跳计时器超时时间,具体为:
12、判断tcp长连接是否为本地启动的第一次连接;
13、若是,则取服务器推荐的心跳计时的大间隔时间、本地记录的上次成功心跳时间或本地记录的上次失败心跳时间中的最小值作为初始心跳计时器超时时间;
14、若否,则计算本次心跳时间,并以计算出的本次心跳时间作为初始心跳计时器超时时间。
15、作为优选,所述若中断,则确定是否需要重新发起tcp长连接,具体包括:
16、若中断,则判断连接是否被正常关闭;
17、若是正常关闭且是服务器发起的连接关闭,则重新发起tcp长连接;
18、若不是正常关闭,则计算下次使用的计时器超时时间,并重新发起tcp长连接。
19、作为优选,还包括:
20、若向服务器发送心跳包后连接中断,则将当前计时器使用的超时时间更新为失败心跳时间,并计算下次使用的计时器超时时间,重新发起tcp长连接。
21、作为优选,所述计算下次使用的计时器超时时间具体为:
22、上次心跳不成功但正常关闭连接:若上次连接时长在1分钟以内,则延用上次的心跳时间,否则使用随机数进行选择;使用随机数进行选择时95%的概率延用上次的心跳时间,5%的概率减少心跳时间;
23、上次心跳不成功且异常关闭连接:若上次连接时长为1分钟以内,则延用上次的心跳时间,否则使用随机数进行选择;使用随机数进行选择时,若本次大间隔成功心跳总次数大于3,则66%的概率延用上次的心跳时间,50%的概率减少心跳时间;
24、上次心跳不成功且原因为心跳失败,则减少心跳时间;
25、上次心跳成功:检查心跳失败时间是否存在且大于本次心跳间隔,而且跟本次心跳间隔属于同一个大间隔,若是,则以1/本次大间隔成功心跳总次数为概率增加心跳间隔,否则增加心跳间隔。
26、作为优选,若选择减小心跳时间,则先在本次大间隔范围内选择更小的小间隔,若小间隔已经是-3,则直接选择更小的大间隔,小间隔值仍然是-3。
27、作为优选,若选择增大心跳时间,则先在本次大间隔范围内选择更大的小间隔,若小间隔已经是+1,则直接选择更大的大间隔,小间隔值变成-3。
28、第二方面,一种通过智能心跳维持tcp长连接的装置,包括:
29、数据传输模块,用于向服务器发送自己环境相关信息;所述服务器根据所述环境相关信息计算心跳计时的大间隔时间,并推荐给客户端;
30、数据接收模块,用于接收服务器推荐的心跳计时的大间隔时间;
31、心跳计时器确定模块,用于根据tcp长连接是否为本地启动的第一次连接以及服务器推荐的心跳计时的大间隔时间确定初始心跳计时器超时时间;
32、计时器设置模块,用于根据初始心跳计时器超时时间设置计时器;
33、第一判断模块,用于判断计数器在超时前是否发送新的实际数据;若是,则取消当前心跳计时器,并重新设置新的计时器;若否,则判断计时器在超时前是否连接中断;
34、第二判断模块,用于若中断,则确定是否需要重新发起tcp长连接;若未中断且达到计时器超时时间,则向服务器发送心跳包,并启动心跳回复计时器;
35、第三判断模块,用于判断在心跳回复计时器超时前是否收到服务器的回复心跳;若收到服务器的回复心跳,则将当前计时器使用的超时时间更新为成功心跳时间,并计算下次使用的计时器超时时间,使用计算出的计时器超时时间启动下一次的心跳计时器;若未收到服务器的回复心跳,则将当前计时器使用的超时时间更新为失败心跳时间,并计算下次使用的计时器超时时间,重新发起tcp长连接。
36、第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现一种通过智能心跳维持tcp长连接的方法的步骤。
37、第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现一种本文档来自技高网...
【技术保护点】
1.一种通过智能心跳维持TCP长连接的方法,其特征在于,所述方法应用于客户端,包括:
2.根据权利要求1所述的通过智能心跳维持TCP长连接的方法,其特征在于,所述根据TCP长连接是否为本地启动的第一次连接以及服务器推荐的心跳计时的大间隔时间确定初始心跳计时器超时时间,具体为:
3.根据权利要求1所述的通过智能心跳维持TCP长连接的方法,其特征在于,所述若中断,则确定是否需要重新发起TCP长连接,具体包括:
4.根据权利要求1所述的通过智能心跳维持TCP长连接的方法,其特征在于,还包括:
5.根据权利要求4所述的通过智能心跳维持TCP长连接的方法,其特征在于,所述计算下次使用的计时器超时时间具体为:
6.根据权利要求5所述的通过智能心跳维持TCP长连接的方法,其特征在于,若选择减小心跳时间,则先在本次大间隔范围内选择更小的小间隔,若小间隔已经是-3,则直接选择更小的大间隔,小间隔值仍然是-3。
7.根据权利要求5所述的通过智能心跳维持TCP长连接的方法,其特征在于,若选择增大心跳时间,则先在本次大间隔范围内选择
8.一种通过智能心跳维持TCP长连接的装置,其特征在于,包括:
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种通过智能心跳维持tcp长连接的方法,其特征在于,所述方法应用于客户端,包括:
2.根据权利要求1所述的通过智能心跳维持tcp长连接的方法,其特征在于,所述根据tcp长连接是否为本地启动的第一次连接以及服务器推荐的心跳计时的大间隔时间确定初始心跳计时器超时时间,具体为:
3.根据权利要求1所述的通过智能心跳维持tcp长连接的方法,其特征在于,所述若中断,则确定是否需要重新发起tcp长连接,具体包括:
4.根据权利要求1所述的通过智能心跳维持tcp长连接的方法,其特征在于,还包括:
5.根据权利要求4所述的通过智能心跳维持tcp长连接的方法,其特征在于,所述计算下次使用的计时器超时时间具体为:
6.根据权利要求5所述的通过智能心跳维持tcp长连接的方法,其特征...
【专利技术属性】
技术研发人员:邓旻昊,
申请(专利权)人:北京安信智通科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。