心跳数据包发送方法技术

技术编号:20729755 阅读:34 留言:0更新日期:2019-03-30 19:22
本发明专利技术公开一种心跳数据包发送方法,包括:S1、客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址;S2、客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,若三次心跳交互都成功,则进入S3;S3、客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加设定步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至心跳失败,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值;自适应心跳计算状态;S4、客户端以心跳周期最大值为周期发送心跳数据包,进入稳定态。

【技术实现步骤摘要】
心跳数据包发送方法
本专利技术涉及移动通信领域,特别是涉及一种基于udp(用户数据报协议)的心跳数据包发送方法。
技术介绍
心跳多用于基于长连的通讯系统中,用于持续的通知后台服务器客户端依旧存活。心跳包就是双方所定义的一种用来通知对方存活的数据通讯结构。周期性的发心跳包给服务器主要有以下几个原因:1、通知服务器客户端存活状态,一旦服务器监测到在某段时间没有收到客户端发来的心跳包,服务器就会释放曾经为此客户端分配的所有资源,例如Socket连接。2、定时的刷新NAT内外网IP映射表,以便防止NAT路由器移除映射表,导致客户端和服务器端的连接中断,特别是基于udp的服务,路由表更新非常频繁。一个简单的实现就是定期的给服务器发送心跳包,但这种实现引出一个问题,就是周期时间间隔是多少为合适?由于不同的网络拓扑结构的实现,NAT节点会分配到不同的网路路由当中,不同的NAT有不同的策略来处理映射表,一旦NAT发现某个映射表对应IP在某段时间内没有上行或下行数据,NAT就会移除此IP映射表,导致连接被中断。另一个问题是以较短的时间间隔周期性地向服务器发送心跳包,会加大客户端尤其是移动设备的功耗和流量的消耗。基于以上考虑设计一种智能心跳,可以根据不同的网络情况,自动调整发送心跳包的周期,以解决上述所提出的问题。
技术实现思路
本专利技术针对现有技术存在的问题和不足,提供一种新型的心跳数据包发送方法,用于解决固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。本专利技术是通过下述技术方案来解决上述技术问题的:本专利技术提供一种心跳数据包发送方法,其特点在于,其包括以下步骤:S1、客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址;S2、客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,若三次心跳交互都成功,则进入步骤S3;S3、客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加设定步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至心跳失败,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值;自适应心跳计算状态;S4、客户端以心跳周期最大值为周期发送心跳数据包,进入稳定态。较佳地,步骤S4之后包括以下步骤:S5、一段时间后,在心跳周期最大值的基础上增加步长,继续探测心跳周期最大值,以适应Nat超时时间变长的情况。较佳地,目标服务器收到心跳数据包后,将收到的心跳数据包的地址与已缓存的上个发送的心跳数据包的地址作比较,若地址改变,目标服务器立即做相应更新,并为客户端回复一个Nat变更数据包,若标识未改变,则向客户端返回一个针对该心跳数据包的确认数据包。较佳地,在步骤S5中,客户端收到来自目标服务器的Nat变更数据包,则客户端取最近一次心跳周期最大值的一半的值作为基础,重新探测心跳周期最大值。较佳地,若客户端连续三次心跳包均未得到目标服务器的回执,则客户端认为目标服务器已发生故障,客户端关闭socket连接。在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本专利技术各较佳实例。本专利技术的积极进步效果在于:本专利技术引入短心跳机制、自适应心跳机制和successHeart心跳机制,用于解决固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。附图说明图1为本专利技术较佳实施例的心跳数据包发送方法的流程框图。图2为客户端发向目标服务器的心跳数据结构。图3为服务端收到心跳数据后向客户端发送的回执数据,如果服务端检测到端口号改变,则将Nat字段值置为1,否则将其置为0。图4为本专利技术客户端和目标服务器对心跳数据包处理的逻辑流程图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1-4所示,本实施例提供一种心跳数据包发送方法,其包括以下步骤。客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址。客户端启动心跳线程,并向目标服务器发送心跳数据包。在用户通过客户端与目标服务器建立网络通信连接过程中,在客户端断开与目标服务器的通信之前,客户端为了告知目标服务器其为在线状态,通过向目标服务器发送心跳数据包,以确保通信连接的有效性。客户端向目标服务器发送心跳数据包的目的在于与目标服务器保持长连接,至于心跳数据包中包含的具体内容没有特别的规定,不过,为了减轻目标服务器对心跳数据包的处理资源,心跳数据包一般都是很小的包,或者只包含包头的一个空包。本专利技术实施例对心跳数据包中包含的具体内容不作限定。目标服务器收到来自客户端的心跳包后,相应地向客户端回执一个数据包。如图3所示,如果服务端检测到端口号改变,则将Nat字段值置为1,否则将其置为0。现有技术中,客户端每隔固定时间间隔会向服务器发送一次心跳数据包请求,这样会增大客户端的功耗,也会增加服务器的访问负荷,影响服务器的响应速度。为了解决上述问题,客户端在将心跳数据包发送给目标服务器时,引入短心跳机制和自适应心跳机制。在具体实施时,客户端先用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,如果三次心跳交互都成功,则客户端进入自适应心跳状态,否则断开连接。自适应心跳机制的核心在于探测心跳最大值,客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至收到来自目标服务器的nat变更数据包,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successHeart,然后客户端以successHeart为周期发送心跳,进入稳定态。取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,是为了规避Nat超时的临界值。处于稳定态的客户端将以successHeart为周期发送心跳,一段时间后,在successHeart基础上增加步长,继续探测心跳最大值,以适应nat超时时间变长的情况。目标服务器收到心跳数据包后,将现有地址与已缓存的地址作比较,如果地址改变,目标服务器立即做相应更新,并为客户端回复一个Nat变更的数据包,如果地址未改变,则向客户端返回一个针对该心跳数据包的确认数据包。如果客户端收到来自目标服务器端的Nat变更数据包,则客户端取最近一次successHeart周期一半的值作为基础,重新探测心跳周期最大值。如果客户端连续三个心跳包都没有得到服务端的回执,则认为服务端已故障,客户端关闭socket连接。虽然以上描述了本专利技术的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本专利技术的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本专利技术的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本专利技术的保护范围。本文档来自技高网...

【技术保护点】
1.一种心跳数据包发送方法,其特征在于,其包括以下步骤:S1、客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址;S2、客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,若三次心跳交互都成功,则进入步骤S3;S3、客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加设定步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至心跳失败,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值;自适应心跳计算状态;S4、客户端以心跳周期最大值为周期发送心跳数据包,进入稳定态。

【技术特征摘要】
1.一种心跳数据包发送方法,其特征在于,其包括以下步骤:S1、客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址;S2、客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,若三次心跳交互都成功,则进入步骤S3;S3、客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加设定步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至心跳失败,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值;自适应心跳计算状态;S4、客户端以心跳周期最大值为周期发送心跳数据包,进入稳定态。2.如权利要求1所述的心跳数据包发送方法,其特征在于,步骤S4之后包括以下步骤:S5、一段时间后,在心跳周期最大值的基础上...

【专利技术属性】
技术研发人员:杨阳郑富强
申请(专利权)人:上海数果科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1