[发明专利]一种发送心跳包维持长连接的方法有效

专利信息
申请号: 201310747400.4 申请日: 2013-12-31
公开(公告)号: CN103716323B 公开(公告)日: 2016-11-30
发明(设计)人: 严伯盛;林飞达;黄礼锋 申请(专利权)人: 厦门悦讯信息科技有限公司
主分类号: H04L29/06 分类号: H04L29/06
代理公司: 厦门市新华专利商标代理有限公司 35203 代理人: 朱凌
地址: 361000 福建省厦*** 国省代码: 福建;35
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 发送 心跳 维持 连接 方法
【说明书】:

技术领域

发明涉及通信领域,具体涉及一种发送心跳包维持长连接的方法。

背景技术

现有的心跳包技术全部是由应用层发送数据到服务器,服务器收到心跳包数据后回复客户端,客户端收到服务器的回复确认连接正常,没有收到服务器正常回复判断为连接异常中断。这种技术的主要缺点是浪费很多服务器资源,因为数据需要从网卡缓存空间复制到操作系统内核空间,再要从操作系统内核空间复制到用户空间,服务器回复的数据也需要从用户空间复制到操作系统内核空间,再从内核空间复制到网卡缓存空间。如图1所示。如果单台服务器存在大量的(几十万上百万)长连接,同时每个长连接的心跳包间隔时间很短(小于2分钟),这时服务器会非常频繁的在内核与用户空间之间切换,性能浪费严重。

有鉴于此,本发明人针对现有技术的缺陷深入研究,遂有本案产生。

发明内容

本发明所要解决的技术问题在于提供一种高效率的发送心跳包维持长连接的方法,通过调整TCP的keepAlive参数来实现,用TCP协议的keepAlive选项是TCP协议本身的功能,属于传输层,服务器收到客户端发过来的keepAlive探测包时在传输层就可以回复客户端,并不会再向上层提交,所以效率高很多。

本发明是这样实现的:

一种发送心跳包维持长连接的方法,包括如下步骤:

步骤一:打开keepAlive开关,设置keepAlive参数,具体包括:

客户端:

步骤A1:建立TCP Socket客户端;

步骤A2:打开SO_KEEPALIVE选项;

步骤A3:设置TCP_KEEPIDLE 为心跳包间隔周期;

步骤A4:设置TCP_KEEPINTVL为s秒;

步骤A5:设置TCP_KEEPCNT为n次;

步骤A6:开始阻塞式读写; 

服务端:

步骤B1:建立TCP Socket服务端;

步骤B2:选用异步非阻塞读写;

步骤B3:处理正常业务逻辑,不处理心跳包代码;

步骤二:客户端TCP的保活计时器开始工作,如果在保活计时器到期之前没有发生有效数据传输,工作在系统的内核空间的客户端TCP协议栈自动向服务端发起一个keep-alive packet ,该 keep-alive packet 就是 ACK 和当前TCP 序列号减一的组合,此时根据网络的不同情况,会出现正常情况、网络异常或服务端异常、服务端曾经中断后重启三种处理流程:

如果是正常情况,转入步骤C1:

步骤C1:客户端向服务端发起keepAlive 探测包;

步骤C2:服务端收到keepAlive 探测包;

步骤C3:服务端发出ACK回复包;

步骤C4:客户端收到ACK回复包;

步骤C5:客户端保活计时器重新开始计时,进入下一次循环;

如果是网络异常,或服务端异常,转入步骤D1:

步骤D1:客户端向服务端发起keepAlive 探测包;

步骤D2:经过TCP_KEEPINTVL设定的时间后客户端未收到回复,再次发出keepAlive 探测包,重复TCP_KEEPCNT设定的次数;

步骤D3:客户端一直未收到ACK回复包,引起 SOCKET_ERROR;

步骤D4:内核空间向用户空间提交 SOCKET_ERROR;

步骤D5:用户空间应用程序检测到 SOCKET_ERROR, recv 函数返回 SOCKET_ERROR,WSAGetLastError()得到的结果为WSAECONNRESET(10054) ,重新建立新SOCKET与服务端连接;

如果是服务端曾经中断后重启,转入步骤E1:

步骤E1:客户端向服务端发起keepAlive 探测包;

步骤E2:服务端收到keepAlive 探测包;

步骤E3:服务端发出RST标志复位回复包;

步骤E4:客户端收到RST标志复位回复包 ;

步骤E5:客户端发起SocketException:远程主机强迫关闭了一个现有的连接错语,关闭当前socket;

步骤E6:客户端内核空间向用户空间的用户程序提交SocketException;

步骤E7:用户空间应用程序检测到SocketException ,重新建立新的SOCKET与服务端连接。

进一步地,所述步骤A4中的s为5;所述步骤A5中的n为2。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门悦讯信息科技有限公司,未经厦门悦讯信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310747400.4/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top