断开后自动重连的网络通信方法与流程

文档序号:12889938阅读:778来源:国知局

本发明涉及网络通信技术,特别涉及服务器与终端间通信断开后自动重连的技术。



背景技术:

现今,网络通信是绝大多数终端设备所必备的一项基本功能,终端设备要访问网络,必须要使用移动、联通等网络运营商提供的服务,wifi和有线网络和移动网络是终端设备上网的3种主要途径,wifi和有线一般按宽带的大小收取相应费用,而移动网络则是按使用的网络流量收取费用。wifi上网和有线上网需要在终端设备附近安装路由器,但是在某些地方并不方便安装路由器,例如马路边、制度严格的大商场等。即使方便安装,又担心路由器随时遭到损坏,所以很多终端设备还是优先选用移动网络上网,尽管使用移动网络是安装流量计费,相对昂贵。

tcp/ip是整个互联网通信的基础,它解决了数据包的路由问题,并且在数据包在传输中被意外丢失时,它会对数据包进行重传,因此在物理通信线路正常的情况下,tcp/ip协议保证了数据包能够准确地从一个网络节点传到另一个网络节点,它是一个可靠的网络通信协议。现今的网络通信一般都是采用http协议,http协议是在tcp/ip协议的基础上的进一步制定的网络通信协议,相对tcp/ip协议,它对数据包进行了更深层的封装,它使得发送端与接收端都很方便对数据进行处理,但是也存在缺陷,它对原始数据进行了更深层次的封装,因此相对tcp/ip协议http协议更加耗费流量。而某些终端机与服务器之间的通信数据并不复杂,针对这类机器,并没有必要一定要采用http协议进行通信,直接基于tcp/ip协议进行通信,能够达到节省流量的目的。

另某些设备(如自动售货机)对网络通信质量要求比较高,为了正常执行业务工作,它们需要实时与服务器进行通信。但是网络通信状况异常复杂,终端机与服务器有时难免会断开连接,例如有些服务器一旦检测到某个终端机发来的数据不合法,出于安全考虑,服务器就会自动断开与该终端机的通信连接。及时地检测出网络的通信状态并且自动重新建立终端机与服务器端的连接是广大用户的强烈诉求。

一方面,用户需要降低终端机流量使用节约成本,另一方面,终端机为正常执行业务工作需要一种比较稳健的网络通信方法,因此研究省流量并且断开后会自动重连的网络通信方法具有很深远的意义。



技术实现要素:

本发明的目的是提出一种断开后自动重连的网络通信方法,能够解决目前终端向服务器请求连接与服务器回执终端的请求均是通过同一个指定的线程进行,其在多个终端向服务器发送连接请求以及服务器回执多个终端的连接请求时,容易造成路径堵塞,并且终端与服务器的通信异常时自动重连时不能及时地检测出网络的通信状态的问题。

本发明解决其技术问题,采用的技术方案是:断开后自动重连的网络通信方法,其特征在于,包括以下步骤:

步骤1、开启服务器;

步骤2、服务器等待终端的连接请求;

步骤3、终端创建一个发送线程和接收线程;

步骤4、终端向服务器发送连接请求;

步骤5、服务器接收到终端的连接请求后,服务器对应创建一个新的发送线程和新的接收线程;

步骤6、终端通过发送线程向服务器发送数据包;

步骤7、服务器通过新的接收线程接收终端发来的数据包,并判断与终端的通信连接是否正常,若判断与终端的通信连接正常,进入步骤8,若判断与终端的通信连接不正常,则终止与终端机通信的新的发送线程,然后终止本次新的接收线程,然后返回步骤3;

步骤8、终端通过接收线程接收服务器发来的应答数据包,并判断与服务器的通信连接是否正常,若判断与服务器的通信连接正常,则返回步骤6,若判断与服务器的通信连接不正常,则返回步骤4。

进一步的是,所述服务器与终端采用tcp/ip协议进行通信。

进一步的是,步骤2中具体为:所述服务器运行终端的连接请求程序,所述终端的连接请求程序包括服务器的ip地址和服务器指定的端口号。

进一步的是,步骤6或步骤7中,所述数据包心跳数据包和业务数据包。

进一步的是,步骤6中,终端机在没有业务数据包向服务器传送时,就会每间隔时间t向服务器端发送心跳包,所述时间t的大小由终端与服务器端事先约定。

进一步的是,步骤7中,服务器每次接收到终端发来的数据包后,则立即向终端发送相应的应答数据包。

进一步的是,步骤8中,所述数据应答包心跳应答包和业务应答包。

进一步的是,步骤7中服务器判断与终端的通信连接是否正常具体包括:服务器记录最后一次接收到终端发来的数据包的时间为t1,根据服务器能容忍的最大丢包上限n,n的值可根据具体情况设定,在当前时间为t2时刻时,如果满足(t2-t1)/t>n,则服务器判定其与终端的通信连接已经断开,如果满足(t2-t1)/t<=n,则服务器判定与终端通信连接正常。

进一步的是,步骤8中终端判断与服务器的通信连接是否正常具体包括:终端记录最后一次接收到服务器端发来的应答数据包的时间为t1,根据终端能容忍的最大丢包上限n,n的值可根据具体情况设定,在当前时间为t2时刻时,如果满足(t2-t1)/t>n,则终端判定其与服务器通信连接已经断开,如果满足(t2-t1)/t<=n,则终端判定其与服务器通信连接正常。

本发明的有益效果是,通过本发明的技术方案,能够及时地检测出网络的通信状态,并且每个终端与服务器建立网络通信连接均分别使用其各自对应的路径,避免了传输路径堵塞。

具体实施方式

下面结合实施例,详细描述本发明的技术方案。

本发明所述断开后自动重连的网络通信方法,包括以下步骤:

步骤1、开启服务器;

步骤2、服务器等待终端的连接请求;

步骤3、终端创建一个发送线程和接收线程;

步骤4、终端向服务器发送连接请求;

步骤5、服务器接收到终端的连接请求后,服务器对应创建一个新的发送线程和新的接收线程;

步骤6、终端通过发送线程向服务器发送数据包;

步骤7、服务器通过新的接收线程接收终端发来的数据包,并判断与终端的通信连接是否正常,若判断与终端的通信连接正常,进入步骤8,若判断与终端的通信连接不正常,则终止与终端机通信的新的发送线程,然后终止本次新的接收线程,然后返回步骤3;

步骤8、终端通过接收线程接收服务器发来的应答数据包,并判断与服务器的通信连接是否正常,若判断与服务器的通信连接正常,则返回步骤6,若判断与服务器的通信连接不正常,则返回步骤4。

实施例

本发明实施例断开后自动重连的网络通信方法,包括以下步骤:

步骤1、开启服务器;

步骤2、服务器等待终端的连接请求;

步骤3、终端创建一个发送线程和接收线程;

步骤4、终端向服务器发送连接请求;

步骤5、服务器接收到终端的连接请求后,服务器对应创建一个新的发送线程和新的接收线程;

步骤6、终端通过发送线程向服务器发送数据包;

步骤7、服务器通过新的接收线程接收终端发来的数据包,并判断与终端的通信连接是否正常,若判断与终端的通信连接正常,进入步骤8,若判断与终端的通信连接不正常,则终止与终端机通信的新的发送线程,然后终止本次新的接收线程,然后返回步骤3;

步骤8、终端通过接收线程接收服务器发来的应答数据包,并判断与服务器的通信连接是否正常,若判断与服务器的通信连接正常,则返回步骤6,若判断与服务器的通信连接不正常,则返回步骤4。

上述方法中,服务器与终端采用tcp/ip协议进行通信。

步骤2中具体为:服务器运行终端的连接请求程序,终端的连接请求程序包括服务器的ip地址和服务器指定的端口号。

步骤6或步骤7中,数据包心跳数据包和业务数据包。

步骤6中,终端机在没有业务数据包向服务器传送时,就会每间隔时间t向服务器端发送心跳包,时间t的大小由终端与服务器端事先约定。

步骤7中,服务器每次接收到终端发来的数据包后,则立即向终端发送相应的应答数据包。

步骤8中,数据应答包心跳应答包和业务应答包。

步骤7中服务器判断与终端的通信连接是否正常具体包括:服务器记录最后一次接收到终端发来的数据包的时间为t1,根据服务器能容忍的最大丢包上限n,n的值可根据具体情况设定,在当前时间为t2时刻时,如果满足(t2-t1)/t>n,则服务器判定其与终端的通信连接已经断开,如果满足(t2-t1)/t<=n,则服务器判定与终端通信连接正常。

步骤8中终端判断与服务器的通信连接是否正常具体包括:终端记录最后一次接收到服务器端发来的应答数据包的时间为t1,根据终端能容忍的最大丢包上限n,n的值可根据具体情况设定,在当前时间为t2时刻时,如果满足(t2-t1)/t>n,则终端判定其与服务器通信连接已经断开,如果满足(t2-t1)/t<=n,则终端判定其与服务器通信连接正常。

实际应用中,终端机判定与服务器网络连接状态的实例具体为:

假设终端机发送心跳数据包的时间间隔为5秒,终端机能容忍的最大丢包上限为3,终端机最后一次接收到服务器端发来的数据包的时间为2017.2.26-15:36:25,则在时刻2017.2.26-15:36:50检查通信连接的步骤为:

第一步,计算当前时间与最后一次接收到服务器端的时间间隔:

t2-t1=(2017.2.26-15:36:50-2017.2.26-15:36:25)=25(秒)

第二步,计算t1时刻t2时刻的丢包数量:

(t2-t1)/t=5

第三步,将丢包数量与终端最大丢包上限进行比较,分析网络连接状态:

5>3

综上所述,丢包的数量大于终端机能容忍搞的最大丢包上限,因此终端机判定与服务器端的通信连接断开,终端需要向服务器端重新请求建立连接。

服务器与某个终端机a网络通信连接的一个实例具体为:

假设终端机发送心跳数据包的时间间隔为5秒,服务器能容忍的最大丢包上限为6,服务器最后一次接收到终端机a发来的数据包的时间为2017.2.26-15:40:10,则在时刻2017.2.26-15:40:40服务器检查与终端机a网络通信连接的步骤为:

第一步,计算当前时刻与最后一次接收到终端机a数据包的时刻的时间间隔:

t2-t1=(2017.2.26-15:40:40-2017.2.26-15:40:10)=30(秒)

第二步,计算t1时刻到t2时刻的丢包数量:

(t2-t1)/t=30/5=6

第三步,将丢包数量与终端最大丢包上限进行比较,分析网络连接状态:

6=6

服务器计算出丢包的数量恰好等于服务器端的最大丢包上限,因此在t2时刻,服务器依然判定其与终端机a的通信连接正常,但是如果再过5秒钟服务器还没收到,终端机a的数据包,服务器会判定其与终端机a的通信连接是断开的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1