CN104426714A - 一种用于保持连接的心跳测试方法和装置 - Google Patents
一种用于保持连接的心跳测试方法和装置 Download PDFInfo
- Publication number
- CN104426714A CN104426714A CN201310389304.7A CN201310389304A CN104426714A CN 104426714 A CN104426714 A CN 104426714A CN 201310389304 A CN201310389304 A CN 201310389304A CN 104426714 A CN104426714 A CN 104426714A
- Authority
- CN
- China
- Prior art keywords
- client
- buffering area
- detected
- data
- transmission buffering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种用于保持连接的心跳测试方法和装置,属于通信技术领域。所述方法包括:根据心跳检测条件,在与服务器连接的多个客户端中确定待检测客户端;确认待检测客户端对应的发送缓冲区的状态;根据待检测客户端对应的发送缓冲区的状态后的设定时间段内,待检测客户端对应的发送缓冲区内的数据变化情况,判断该待检测客户端是否与服务器断开连接。所述装置包括:确定模块、状态确认模块和判断模块。本发明实施例通过当客户端满足心跳检测条件时,根据设定时间段内,所述发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种用于保持连接的心跳测试方法和装置。
背景技术
在移动互联的实时交互***中,服务器***时常会有消息向客户端进行推送,为了保证消息可以发送成功,服务器需要与客户端保持一个长久的TCP(Transmission Control Protocol,传输控制协议)连接。
为了保持客户端与服务器之间的TCP连接,TCP协议提供了一种keepalive(心跳)机制。在该机制中,服务器需要定时发送心跳消息给各个客户端,若服务器在发送心跳消息后预定时间内,收到客户端返回的响应消息,则判断该客户端没有与服务器断开连接;若服务器在发送心跳消息后预定时间内,未收到客户端的响应消息,会再次发送心跳消息。当服务器发送预定次数的心跳消息都没有收到客户端的响应消息,则判断该客户端已断开与服务器的连接。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于服务器需要在多次发送心跳消息之后,才能判断客户端的状态,而心跳消息是间隔发送的,所以服务器并不能及时发现客户端是否断开,从而会对服务器和客户端之间的正常通信造成影响。
发明内容
为了解决现有技术中服务器不能及时发现客户端是否断开的问题,本发明实施例提供了一种用于保持连接的心跳测试方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种用于保持连接的心跳测试方法,应用于服务器中,所述服务器与多个客户端保持连接,所述服务器为多个所述客户端分别设有发送缓冲区,所述发送缓冲区用于写入所述服务器将要发送给所述客户端的待发送数据,在收到所述客户端发送的响应消息后,所述服务器删除所述客户端对应的发送缓冲区中与所述响应消息对应的待发送数据,所述响应消息用于指示所述客户端已收到的数据,其特征在于,所述方法包括:
根据心跳检测条件,在多个所述客户端中确定待检测客户端,所述心跳检测条件用于判断客户端是否需要进行心跳测试,以确定所述客户端是否与服务器断开连接;
确认所述待检测客户端对应的发送缓冲区的状态,所述发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小;
根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与所述服务器断开连接。
可选地,所述心跳检测条件包括以下条件中的一种或多种:
当前有数据需要发送给所述客户端;
距上一次向所述客户端发送数据的时长达到预定值。
在本实施例的一种实现方式中,在所述确认所述待检测客户端对应的发送缓冲区的状态之后,所述方法还包括:
将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
可选地,所述将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区,包括:
当所述待检测客户端对应的发送缓冲区中没有待发送数据时,将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
进一步地,所述根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与服务器断开连接,包括:
在将所述心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区后,保持所述待检测客户端对应的发送缓冲区在所述设定时间段内不写入待发送数据;
在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
若读取到的所述发送缓冲区内的待发送数据的大小,小于将所述心跳消息写入所述发送缓冲区时的所述发送缓冲区内的待发送数据的大小,则判断所述待检测客户端未与所述服务器断开连接。
在本实施例的另一种实现方式中,所述根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与服务器断开连接,包括:
在所述确认所述待检测客户端对应的发送缓冲区的状态之后,当所述待检测客户端对应的发送缓冲区中有待发送数据时,保持所述待检测客户端对应的发送缓冲区在所述设定时间段内不写入待发送数据;
在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
若所述设定时间段结束时的所述待检测客户端对应的发送缓冲区内的待发送数据的大小,小于确定所述发送缓冲区的状态时的所述待检测客户端对应的发送缓冲区内的待发送数据的大小,则判断所述待检测客户端未与服务器断开连接。
具体地,所述设定时间段的长度可以小于或等于1分钟。
另一方面,本发明实施例提供了一种用于保持连接的心跳测试装置应用于服务器中,所述服务器与多个客户端保持连接,所述服务器为多个所述客户端分别设有发送缓冲区,所述发送缓冲区用于写入所述服务器将要发送给所述客户端的待发送数据,在收到所述客户端发送的响应消息后,所述服务器删除所述客户端对应的发送缓冲区中与所述响应消息对应的待发送数据,所述响应消息用于指示所述客户端已收到的数据,其特征在于,所述装置包括:
确定模块,用于根据心跳检测条件,在多个所述客户端中确定待检测客户端,所述心跳检测条件用于判断客户端是否需要进行心跳测试,以确定所述客户端是否与服务器断开连接;
状态确认模块,用于确认所述待检测客户端对应的发送缓冲区的状态,所述发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小;
判断模块,用于根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与所述服务器断开连接。
可选地,所述心跳检测条件包括以下条件中的一种或多种:
当前有数据需要发送给所述客户端;
距上一次向所述客户端发送数据的时长达到预定值。
在本实施例的一种实现方式中,所述装置还包括:
消息写入模块,用于在确认所述待检测客户端对应的发送缓冲区的状态之后,将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
可选地,所述消息写入模块,用于当所述待检测客户端对应的发送缓冲区中没有待发送数据时,将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
具体地,所述判断模块包括:
第一保持单元,用于在将所述心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区后,保持所述待检测客户端对应的发送缓冲区在所述设定时间段内不写入待发送数据;
第一读取单元,用于在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
第一判断单元,用于当读取到的所述发送缓冲区内的数据的大小,小于将所述心跳消息写入所述发送缓冲区时的所述发送缓冲区内的数据的大小时,判断所述待检测客户端未与服务器断开连接。
在本发明实施例的另一种实现方式中,所述判断模块包括:
第二保持单元,用于在所述确认所述待检测客户端对应的发送缓冲区的状态之后,当所述待检测客户端对应的发送缓冲区中有待发送数据时,保持所述发送缓冲区在所述设定时间段内不写入待发送数据;
第二读取单元,用于在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
第二判断单元,还用于当所述设定时间段结束时的所述待检测客户端对应的发送缓冲区内的数据的大小,小于确定所述发送缓冲区的状态时的所述待检测客户端对应的发送缓冲区内的待发送数据的大小时,判断所述待检测客户端未与服务器断开连接。
具体地,所述设定时间段的长度可以小于或等于1分钟。
本发明实施例提供的技术方案带来的有益效果是:
根据心跳检测条件确定待检测客户端,并根据设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的用于保持连接的心跳测试方法的流程图;
图2是本发明实施例二提供的用于保持连接的心跳测试方法的流程图;
图3是本发明实施例三提供的用于保持连接的心跳测试方法的流程图;
图4是本发明实施例四提供的用于保持连接的心跳测试装置的结构示意图;
图5是本发明实施例五提供的用于保持连接的心跳测试装置的结构示意图;
图6是本发明实施例六提供的用于保持连接的心跳测试装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例提供了一种用于保持连接的心跳测试方法,应用于服务器中,该服务器与多个客户端保持连接,该服务器为多个客户端分别设有发送缓冲区,该发送缓冲区用于写入服务器将要发送给客户端的待发送数据,在收到客户端发送的响应消息后,服务器删除该客户端对应的发送缓冲区中与该响应消息对应的待发送数据,该响应消息用于指示客户端已收到的数据。参见图1,该方法包括:
101:根据心跳检测条件,在与服务器连接的多个客户端中确定待检测客户端。
该心跳检测条件用于判断客户端是否需要进行心跳测试,以确定该客户端是否与服务器断开连接。
102:确认该待检测客户端对应的发送缓冲区的状态。
具体地,发送缓冲区状态可以包括:发送缓冲区内是否有待发送数据,和/或,发送缓冲区中的待发送数据的大小。
103:根据确认待检测客户端对应的发送缓冲区的状态后的设定时间段内,待检测客户端对应的发送缓冲区内的数据变化情况,判断该待检测客户端是否与服务器断开连接。
本发明实施例通过根据心跳检测条件确定待检测客户端,并根据设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
实施例二
本发明实施例提供了一种用于保持连接的心跳测试方法,应用于服务器中,该服务器与多个客户端保持连接,该服务器为多个客户端分别设有发送缓冲区,该发送缓冲区用于写入服务器将要发送给客户端的待发送数据,在收到客户端发送的响应消息后,服务器删除该客户端对应的发送缓冲区中与该响应消息对应的待发送数据,该响应消息用于指示客户端已收到的数据。参见图2,该方法包括:
201:根据心跳检测条件,在与服务器连接的多个客户端中确定待检测客户端。
其中,该心跳检测条件用于判断客户端是否需要进行心跳测试,以确定该客户端是否与服务器断开连接。
具体地,该心跳检测条件可以包括以下条件中的一种或多种:
当前有数据需要发送给该客户端;
距上一次向该客户端发送数据的时长达到预定值。
符合该心跳检测条件的客户端,即为待检测客户端。通过设置该心跳测试条件,可以根据实际需要对客户端进行心跳测试,与现有技术中需要定时向客户端发送心跳消息相比,可以有效减少网络资源消耗。容易知道,在具体实现中,也可以采用定时来作为该心跳检测条件。
202:确认待检测客户端对应的发送缓冲区的状态。
其中,发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小。当待检测客户端对应的发送缓冲区中没有待发送数据时,顺序执行步骤203~205;当待检测客户端对应的发送缓冲区中有待发送数据时,顺序执行步骤206~208。
容易知道,服务器对应每个客户端都会设置一个发送缓冲区,需要发送给客户端的数据(例如心跳消息以及其他消息),都会先写入该客户端对应的发送缓冲区,然后再发送给客户端。
203:将心跳消息作为待发送数据写入待检测客户端对应的发送缓冲区。
其中,该心跳消息可以为空数据包,这样可以进一步节省网络开销。当然,该心跳消息也可以配置为其它类型的数据包。
204:在将该心跳信息写入待检测客户端对应的发送缓冲区后,保持该发送缓冲区在设定时间段内不写入待发送数据。
具体实现时,该设定时间段可以是从心跳消息写入完成时,开始计算,直到达到设定时长。当然,该设定时间段也可以从确认发送缓冲区的状态时开始计算,直到达到设定时长。可以根据实际需要设置,在此不作限制。
具体地,该设定时间段的长度可以小于或等于1分钟。在具体实现中,该设定时间段的长度可以根据实际网络状况设置,在网络状况好的情况下,可以设置为1s或2s,甚至小于1s,例如1ms。
205:在设定时间段结束时,读取待检测客户端对应的发送缓冲区内的待发送数据的大小,并根据读取到的待发送数据的大小,判断待检测客户端是否与服务器断开连接。
根据读取到的待发送数据的大小,判断待检测客户端是否与服务器断开连接,包括:
若读取到的发送缓冲区内的待发送数据的大小,小于将心跳消息写入待检测客户端对应的发送缓冲区时的发送缓冲区内的待发送数据的大小(表示心跳消息已完全或部分发送成功),则判断待检测客户端未与服务器断开连接,若读取到的发送缓冲区内的数据的大小,等于将心跳消息写入发送缓冲区时的发送缓冲区内的数据的大小(表示心跳消息未发送成功),则判断该待检测客户端断开连接。
容易知道,在将该心跳信息写入发送缓冲区后,发送数据的具体流程遵从TCP协议。每当有数据发送成功(即客户端接收到数据),服务器会收到客户端发送的一个确认响应,该确认响应用于指示哪些数据已发送成功,服务器会根据该响应,将发送缓冲区内相应的数据删除。因此,在设定时间后,读取发送缓冲区内的数据的大小,即可知道是否有数据发送成功,进而据此判断客户端是否与服务器断开连接。
具体地,将心跳消息写入发送缓冲区时的发送缓冲区内的待发送数据的大小,可以通过以下两种方式获得:
第一种、在将心跳消息写入发送缓冲区时,读取发送缓冲区内的数据的大小;
第二种、在客户端符合心跳检测条件时,读取发送缓冲区内的数据的大小,然后用读取到的数据的大小加上心跳消息的大小。
步骤206:在确定待检测客户端对应的发送缓冲区的状态之后,保持该待检测客户端对应的发送缓冲区在设定时间段内不写入待发送数据。
也就是说,当待检测客户端对应的发送缓冲区中有待发送数据时,不需要将心跳消息写入待检测客户端对应的发送缓冲区中,可以减少服务器的操作,并进一步减少判断待检测客户端是否与服务器断开连接所需的时间。容易知道,该步骤中的设定时间段,可以从确定发送缓冲区内的数据的大小开始计算,直到达到设定时长。可以根据实际需要设置,在此不作限制。
步骤207:在设定时间段结束时,读取待检测客户端对应的发送缓冲区内的待发送数据的大小,并根据读取到的待发送数据的大小,判断该客户端是否与服务器断开连接。
具体地,根据读取到的待发送数据的大小,判断该客户端是否与服务器断开连接,包括:
若设定时间段结束时,待检测客户端对应的发送缓冲区内的待发送数据的大小小于确定发送缓冲区的状态时的待检测客户端对应的发送缓冲区内的待发送数据的大小,则判断待检测客户端未与服务器断开连接。若设定时间段结束时,待检测客户端对应的发送缓冲区内的待发送数据的大小等于确定发送缓冲区的状态时的待检测客户端对应的发送缓冲区内的待发送数据的大小,则判断该客户端断开连接。
通过该步骤204~205和步骤206~207,即可完成根据待检测客户端对应的发送缓冲区内的数据变化情况,判断该客户端是否与服务器断开连接。
需要说明的是,在本实施例中,在步骤204和步骤206中,均待检测客户端对应的保持发送缓冲区在设定时间段内不写入待发送数据,这样可以进一步避免浪费服务器资源。但是,在其它实施例中,也可以允许发送缓冲区写入待发送数据,只需要记录写入待发送数据的大小,即可获知是否有数据发送成功,进而判断客户端是否与服务器断开连接。
本发明实施例通过根据心跳检测条件确定待检测客户端,并根据设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
实施例三
本发明实施例提供了一种用于保持连接的心跳测试方法,应用于服务器中,该服务器与多个客户端保持连接,该服务器为多个客户端分别设有发送缓冲区,该发送缓冲区用于写入服务器将要发送给客户端的待发送数据,在收到客户端发送的响应消息后,服务器删除该客户端对应的发送缓冲区中与该响应消息对应的待发送数据,该响应消息用于指示客户端已收到的数据。与实施例二提供的方法不同的是,本实施例中,当客户端满足心跳检测条件时,无论该客户端对应的发送缓冲区中是否有待发送数据,都会将心跳消息写入该客户端对应的发送缓冲区。
具体地,参见图3,该方法包括:
301:根据心跳检测条件,在与服务器连接的多个客户端中确定待检测客户端。
其中,该心跳检测条件用于判断客户端是否需要进行心跳测试,以确定该客户端是否与服务器断开连接。
具体地,该心跳检测条件可以包括以下条件中的一种或多种:
当前有数据需要发送给该客户端;
距上一次向该客户端发送数据的时长达到预定值。
符合该心跳检测条件的客户端,即为待检测客户端。通过设置该心跳测试条件,可以根据实际需要对客户端进行心跳测试,与现有技术中需要定时向客户端发送心跳消息相比,可以有效减少网络资源消耗。容易知道,在具体实现中,也可以采用定时(到达预定时间)来作为该心跳检测条件。
302:确认待检测客户端对应的发送缓冲区的状态。
其中,发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的数据的大小。
303:将心跳消息作为待发送数据写入待检测客户端对应的发送缓冲区。
也就是说,无论待检测客户端对应的发送缓冲区中是否存在待发送数据,均将心跳消息写入该客户端对应的发送缓冲区。
304:在将心跳消息写入待检测客户端对应的发送缓冲区后,保持该发送缓冲区在设定时间段内不写入待发送数据。
具体实现时,该设定时间段可以是从心跳消息写入完成时,开始计算,直到达到设定时长。当然,该设定时间段也可以从确认发送缓冲区的状态时开始计算,直到达到设定时长。可以根据实际需要设置,在此不作限制。
具体地,该设定时间段的长度可以小于或等于1分钟。在具体实现中,该设定时间段的长度可以根据实际网络状况设置,在网络状况好的情况下,可以设置为1s或2s,甚至小于1s,例如1ms。
305:在设定时间段结束时,读取待检测客户端对应的发送缓冲区内的数据的大小,并根据读取到的待发送数据的大小,判断待检测客户端是否与服务器断开连接。
具体地,根据读取到的待发送数据的大小,判断待检测客户端是否与服务器断开连接,包括:
若读取到的发送缓冲区内的待发送数据的大小,小于将心跳消息写入待检测客户端对应的发送缓冲区时的发送缓冲区内的待发送数据的大小,则判断待检测客户端未与服务器断开连接。
该步骤305的具体实现过程和原理,同上述步骤205,在此不再赘述。
需要说明的是,在本实施例中,在步骤304中,保持发送缓冲区在设定时间段内不写入待发送数据,但是,在其它实施例中,也可以允许发送缓冲区写入待发送数据,只需要记录写入待发送数据的大小,即可获知是否有数据发送成功,进而判断客户端是否与服务器断开连接。
本发明实施例通过根据心跳检测条件确定待检测客户端,并根据设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
实施例四
本发明实施例提供了一种用于保持连接的心跳测试装置,应用于服务器中,该服务器与多个客户端保持连接,该服务器为多个客户端分别设有发送缓冲区,该发送缓冲区用于写入服务器将要发送给客户端的待发送数据,在收到客户端发送的响应消息后,服务器删除该客户端对应的发送缓冲区中与该响应消息对应的待发送数据,该响应消息用于指示客户端已收到的数据,参见图4,该装置包括:
确定模块401,用于根据心跳检测条件,在多个客户端中确定待检测客户端,该心跳检测条件用于判断客户端是否需要进行心跳测试,以确定该客户端是否与服务器断开连接;
状态确认模块402,用于确认待检测客户端对应的发送缓冲区的状态,发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小;
判断模块403,用于根据确认待检测客户端对应的发送缓冲区的状态后的设定时间段内,待检测客户端对应的发送缓冲区内的数据变化情况,判断待检测客户端是否与服务器断开连接。
本发明实施例通过根据心跳检测条件确定待检测客户端,并根据设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
实施例五
本发明实施例提供了一种用于保持连接的心跳测试装置,应用于服务器中,该服务器与多个客户端保持连接,该服务器为多个客户端分别设有发送缓冲区,该发送缓冲区用于写入服务器将要发送给客户端的待发送数据,在收到客户端发送的响应消息后,服务器删除该客户端对应的发送缓冲区中与该响应消息对应的待发送数据,该响应消息用于指示客户端已收到的数据,参见图5,该装置包括:
确定模块501,用于根据心跳检测条件,在多个客户端中确定待检测客户端,该心跳检测条件用于判断客户端是否需要进行心跳测试,以确定该客户端是否与服务器断开连接;
状态确认模块502,用于确认待检测客户端对应的发送缓冲区的状态,发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小;
判断模块503,用于根据确认待检测客户端对应的发送缓冲区的状态后的设定时间段内,待检测客户端对应的发送缓冲区内的数据变化情况,判断待检测客户端是否与服务器断开连接。
具体地,该心跳检测条件可以包括以下条件中的一种或多种:
当前有数据需要发送给该客户端;
距上一次向该客户端发送数据的时长达到预定值。
符合前述心跳检测条件的为待检测客户端。通过设置该心跳测试条件,可以根据实际需要对客户端进行心跳测试,与现有技术中需要定时向客户端发送心跳消息相比,可以有效减少网络资源消耗。容易知道,在具体实现中,也可以采用定时来作为该心跳检测条件。
可选地,该装置还包括:
消息写入模块504,用于在确认待检测客户端对应的发送缓冲区的状态之后,将心跳消息作为待发送数据写入待检测客户端对应的发送缓冲区。
具体地,在本实施例中,消息写入模块503,用于当待检测客户端对应的发送缓冲区中没有待发送数据时,将心跳消息作为待发送数据写入待检测客户端对应的发送缓冲区。
在本实施例中,判断模块503可以包括:
第一保持单元5031,用于在将心跳消息作为待发送数据写入待检测客户端对应的发送缓冲区后,保持待检测客户端对应的发送缓冲区在设定时间段内不写入待发送数据;
第一读取单元5032,用于在设定时间段结束时,读取待检测客户端对应的发送缓冲区内的待发送数据的大小;
第一判断单元5033,用于当读取到的发送缓冲区内的数据的大小,小于将心跳消息写入发送缓冲区时的发送缓冲区内的数据的大小时,判断待检测客户端未与服务器断开连接。
在本实施例中,判断模块503还可以包括:
第二保持单元5034,用于在确认待检测客户端对应的发送缓冲区的状态之后,当待检测客户端对应的发送缓冲区中有待发送数据时,保持该发送缓冲区在设定时间段内不写入待发送数据;
第二读取单元5035,用于在设定时间段结束时,读取待检测客户端对应的发送缓冲区内的待发送数据的大小;
第二判断单元5036,还用于当设定时间段结束时的待检测客户端对应的发送缓冲区内的数据的大小,小于确定发送缓冲区的状态时的待检测客户端对应的发送缓冲区内的待发送数据的大小时,判断待检测客户端未与服务器断开连接。
本发明实施例通过根据心跳检测条件确定待检测客户端,并根据设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
实施例六
本发明实施例提供了一种用于保持连接的心跳测试装置,应用于服务器中,该服务器与多个客户端保持连接,该服务器为多个客户端分别设有发送缓冲区,该发送缓冲区用于写入服务器将要发送给客户端的待发送数据,在收到客户端发送的响应消息后,服务器删除该客户端对应的发送缓冲区中与该响应消息对应的待发送数据,该响应消息用于指示客户端已收到的数据,参见图6,该装置包括:
确定模块601,用于根据心跳检测条件,在多个客户端中确定待检测客户端,该心跳检测条件用于判断客户端是否需要进行心跳测试,以确定该客户端是否与服务器断开连接;
状态确认模块602,用于确认待检测客户端对应的发送缓冲区的状态,发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小;
判断模块603,用于根据确认待检测客户端对应的发送缓冲区的状态后的设定时间段内,待检测客户端对应的发送缓冲区内的数据变化情况,判断待检测客户端是否与服务器断开连接。
具体地,该心跳检测条件可以包括以下条件中的一种或多种:
当前有数据需要发送给该客户端;
距上一次向该客户端发送数据的时长达到预定值。
符合前述心跳检测条件的为待检测客户端。通过设置该心跳测试条件,可以根据实际需要对客户端进行心跳测试,与现有技术中需要定时向客户端发送心跳消息相比,可以有效减少网络资源消耗。容易知道,在具体实现中,也可以采用定时来作为该心跳检测条件。
可选地,该装置还包括:
消息写入模块604,用于在确认待检测客户端对应的发送缓冲区的状态之后,将心跳消息作为待发送数据写入发送缓冲区。
在本实施例中,判断模块603可以包括:
第一保持单元6031,用于在将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区后,保持该发送缓冲区在设定时间段内不写入待发送数据;
第一读取单元6032,用于在设定时间段结束时,读取待检测客户端对应的发送缓冲区内的待发送数据的大小;
第一判断单元6033,用于当读取到的发送缓冲区内的待发送数据的大小,小于将心跳消息写入发送缓冲区时的该发送缓冲区内的数据的大小时,判断待检测客户端未与服务器断开连接。
本发明实施例通过根据心跳检测条件确定待检测客户端,并根据设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况来判断所述客户端是否与服务器断开连接,从而可以及时发现客户端是否保持连接,避免了现有技术中,需要重复发送心跳消息,当多次未收到响应时,才能确定客户端是否保持连接而导致的客户端连接状态确认时间过长的问题。
需要说明的是:上述实施例提供的用于保持连接的心跳测试装置在进行心跳测试时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的用于保持连接的心跳测试装置与用于保持连接的心跳测试方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种用于保持连接的心跳测试方法,应用于服务器中,所述服务器与多个客户端保持连接,所述服务器为多个所述客户端分别设有发送缓冲区,所述发送缓冲区用于写入所述服务器将要发送给所述客户端的待发送数据,在收到所述客户端发送的响应消息后,所述服务器删除所述客户端对应的发送缓冲区中与所述响应消息对应的待发送数据,所述响应消息用于指示所述客户端已收到的数据,其特征在于,所述方法包括:
根据心跳检测条件,在多个所述客户端中确定待检测客户端,所述心跳检测条件用于判断客户端是否需要进行心跳测试,以确定所述客户端是否与服务器断开连接;
确认所述待检测客户端对应的发送缓冲区的状态,所述发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小;
根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与所述服务器断开连接。
2.根据权利要求1所述的方法,其特征在于,所述心跳检测条件包括以下条件中的一种或多种:
当前有数据需要发送给所述客户端;
距上一次向所述客户端发送数据的时长达到预定值。
3.根据权利要求1所述的方法,其特征在于,在所述确认所述待检测客户端对应的发送缓冲区的状态之后,所述方法还包括:
将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
4.根据权利要求3所述的方法,其特征在于,所述将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区,包括:
当所述待检测客户端对应的发送缓冲区中没有待发送数据时,将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
5.根据权利要求3或4所述的方法,其特征在于,所述根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与服务器断开连接,包括:
在将所述心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区后,保持所述待检测客户端对应的发送缓冲区在所述设定时间段内不写入待发送数据;
在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
若读取到的所述发送缓冲区内的待发送数据的大小,小于将所述心跳消息写入所述发送缓冲区时的所述发送缓冲区内的待发送数据的大小,则判断所述待检测客户端未与所述服务器断开连接。
6.根据权利要求1或2所述的方法,其特征在于,所述根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与服务器断开连接,包括:
在所述确认所述待检测客户端对应的发送缓冲区的状态之后,当所述待检测客户端对应的发送缓冲区中有待发送数据时,保持所述待检测客户端对应的发送缓冲区在所述设定时间段内不写入待发送数据;
在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
若所述设定时间段结束时的所述待检测客户端对应的发送缓冲区内的待发送数据的大小,小于确定所述发送缓冲区的状态时的所述待检测客户端对应的发送缓冲区内的待发送数据的大小,则判断所述待检测客户端未与服务器断开连接。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述设定时间段的长度小于或等于1分钟。
8.一种用于保持连接的心跳测试装置,应用于服务器中,所述服务器与多个客户端保持连接,所述服务器为多个所述客户端分别设有发送缓冲区,所述发送缓冲区用于写入所述服务器将要发送给所述客户端的待发送数据,在收到所述客户端发送的响应消息后,所述服务器删除所述客户端对应的发送缓冲区中与所述响应消息对应的待发送数据,所述响应消息用于指示所述客户端已收到的数据,其特征在于,所述装置包括:
确定模块,用于根据心跳检测条件,在多个所述客户端中确定待检测客户端,所述心跳检测条件用于判断客户端是否需要进行心跳测试,以确定所述客户端是否与服务器断开连接;
状态确认模块,用于确认所述待检测客户端对应的发送缓冲区的状态,所述发送缓冲区的状态包括发送缓冲区内是否有待发送数据,和/或,发送缓冲区内的待发送数据的大小;
判断模块,用于根据确认所述待检测客户端对应的发送缓冲区的状态后的设定时间段内,所述待检测客户端对应的发送缓冲区内的数据变化情况,判断所述待检测客户端是否与所述服务器断开连接。
9.根据权利要求8所述的装置,其特征在于,所述心跳检测条件包括以下条件中的一种或多种:
当前有数据需要发送给所述客户端;
距上一次向所述客户端发送数据的时长达到预定值。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
消息写入模块,用于在确认所述待检测客户端对应的发送缓冲区的状态之后,将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
11.根据权利要求10所述的装置,其特征在于,所述消息写入模块,用于当所述待检测客户端对应的发送缓冲区中没有待发送数据时,将心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区。
12.根据权利要求10或11所述的装置,其特征在于,所述判断模块包括:
第一保持单元,用于在将所述心跳消息作为待发送数据写入所述待检测客户端对应的发送缓冲区后,保持所述待检测客户端对应的发送缓冲区在所述设定时间段内不写入待发送数据;
第一读取单元,用于在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
第一判断单元,用于当读取到的所述发送缓冲区内的数据的大小,小于将所述心跳消息写入所述发送缓冲区时的所述发送缓冲区内的数据的大小时,判断所述待检测客户端未与服务器断开连接。
13.根据权利要求8或9所述的装置,其特征在于,所述判断模块包括:
第二保持单元,用于在所述确认所述待检测客户端对应的发送缓冲区的状态之后,当所述待检测客户端对应的发送缓冲区中有待发送数据时,保持所述发送缓冲区在所述设定时间段内不写入待发送数据;
第二读取单元,用于在所述设定时间段结束时,读取所述待检测客户端对应的发送缓冲区内的待发送数据的大小;
第二判断单元,还用于当所述设定时间段结束时的所述待检测客户端对应的发送缓冲区内的数据的大小,小于确定所述发送缓冲区的状态时的所述待检测客户端对应的发送缓冲区内的待发送数据的大小时,判断所述待检测客户端未与服务器断开连接。
14.根据权利要求8-11任一项所述的方法,其特征在于,所述设定时间段的长度小于或等于1分钟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310389304.7A CN104426714B (zh) | 2013-08-30 | 2013-08-30 | 一种用于保持连接的心跳测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310389304.7A CN104426714B (zh) | 2013-08-30 | 2013-08-30 | 一种用于保持连接的心跳测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104426714A true CN104426714A (zh) | 2015-03-18 |
CN104426714B CN104426714B (zh) | 2017-12-29 |
Family
ID=52974726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310389304.7A Active CN104426714B (zh) | 2013-08-30 | 2013-08-30 | 一种用于保持连接的心跳测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104426714B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635248A (zh) * | 2015-12-18 | 2016-06-01 | Tcl集团股份有限公司 | 一种tcp连接资源的释放方法及*** |
WO2016161577A1 (zh) * | 2015-04-08 | 2016-10-13 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
CN107708212A (zh) * | 2016-08-09 | 2018-02-16 | 中兴通讯股份有限公司 | 断链维持时间的配置方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090172182A1 (en) * | 2007-12-28 | 2009-07-02 | Samsung Electronics Co. Ltd. | System and method for multimedia streaming service |
WO2009097602A1 (en) * | 2008-02-02 | 2009-08-06 | Qualcomm Incorporated | Radio access network (ran) level keep alive signaling |
CN103036904A (zh) * | 2012-12-27 | 2013-04-10 | 东方通信股份有限公司 | 一种在通信网络中使用udp协议进行数据可靠传输的方法 |
CN103139303A (zh) * | 2013-02-07 | 2013-06-05 | 网易(杭州)网络有限公司 | 一种用于保持连接的心跳方法、装置及*** |
-
2013
- 2013-08-30 CN CN201310389304.7A patent/CN104426714B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090172182A1 (en) * | 2007-12-28 | 2009-07-02 | Samsung Electronics Co. Ltd. | System and method for multimedia streaming service |
WO2009097602A1 (en) * | 2008-02-02 | 2009-08-06 | Qualcomm Incorporated | Radio access network (ran) level keep alive signaling |
CN103036904A (zh) * | 2012-12-27 | 2013-04-10 | 东方通信股份有限公司 | 一种在通信网络中使用udp协议进行数据可靠传输的方法 |
CN103139303A (zh) * | 2013-02-07 | 2013-06-05 | 网易(杭州)网络有限公司 | 一种用于保持连接的心跳方法、装置及*** |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016161577A1 (zh) * | 2015-04-08 | 2016-10-13 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
CN106416133A (zh) * | 2015-04-08 | 2017-02-15 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
CN106416133B (zh) * | 2015-04-08 | 2019-06-28 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
CN105635248A (zh) * | 2015-12-18 | 2016-06-01 | Tcl集团股份有限公司 | 一种tcp连接资源的释放方法及*** |
CN105635248B (zh) * | 2015-12-18 | 2019-06-11 | Tcl集团股份有限公司 | 一种tcp连接资源的释放方法及*** |
CN107708212A (zh) * | 2016-08-09 | 2018-02-16 | 中兴通讯股份有限公司 | 断链维持时间的配置方法及装置 |
CN107708212B (zh) * | 2016-08-09 | 2023-02-21 | 中兴通讯股份有限公司 | 断链维持时间的配置方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104426714B (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102404229B (zh) | 负载均衡***、装置及方法 | |
CN101841441B (zh) | 流量控制设备的测试方法、***及数据流回放装置 | |
CN102394796A (zh) | 链路时延检测方法、源端、宿端及*** | |
CN107479514B (zh) | 一种工业大数据过程控制数据采集和传输***与实现方法 | |
CN102752093B (zh) | 基于分布式文件***的数据处理方法、设备和*** | |
CN103685243A (zh) | 一种基于udp协议的故障录波数据的传输方法 | |
CN102231687A (zh) | 一种链路故障探测方法及装置 | |
CN104065508A (zh) | 应用服务健康检查方法、装置和*** | |
CN104426714A (zh) | 一种用于保持连接的心跳测试方法和装置 | |
CN101808043B (zh) | 端口汇聚trunk成员业务报文转发状态的检测方法及装置 | |
CN103905268A (zh) | Gre链路检测方法、主控板、装置及通信防护*** | |
CN108614750A (zh) | 宕机数据的恢复方法及装置 | |
CN101237314A (zh) | 一种保障复制业务传输的方法及接入设备 | |
CN102882708A (zh) | 运维审计方法、装置及*** | |
CN104753761A (zh) | 消息的处理方法、服务器及*** | |
CN102356609A (zh) | 交换网的流量控制方法和装置 | |
CN104270452A (zh) | 一种远程医疗数据管理***及其无线网络通信方法 | |
CN104750545A (zh) | 一种调度进程的方法及装置 | |
CN105812492A (zh) | 一种数据同步方法及*** | |
CN104853234A (zh) | 一种数据处理方法及***与移动终端 | |
CN101986703A (zh) | 视频录像方法、网络视频监控***以及前端和调度服务器 | |
CN101651713B (zh) | 一种智能卡网络数据传输方法及装置 | |
CN102379109B (zh) | 一种数据流重用传输的方法、复制点设备及*** | |
CN105450519A (zh) | 报文的发送方法及核心交换机 | |
CN105072418B (zh) | 一种判断监控前端设备离线的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |