终端设备和数据传输方法与流程

文档序号:17248274发布日期:2019-03-30 08:56阅读:406来源:国知局
终端设备和数据传输方法与流程

本申请涉及通信领域,具体而言,涉及一种终端设备和数据传输方法。



背景技术:

目前主流定位设备大部分采用tcp(transmissioncontrolprotocol,传输控制协议)传输方式来传输数据,但tcp传输方式在数据传输过程中存在着一定问题。

tcp传输方式通过滑动窗口机制、流量控制机制以及拥塞控制等数据传输机制虽然保证了数据在服务器端和客户端之间的可靠性,使数据在传输过程中不易丢失,但也导致了tcp传输方式在传输数据时传输速度较慢。

针对相关技术中采用tcp传输方式导致数据传输速度较低的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请的主要目的在于提供一种终端设备和数据传输方法,以解决相关技术中采用tcp传输方式导致数据传输速度较低的问题。

为了实现上述目的,根据本申请的一个方面,提供了一种数据传输方法。

根据本申请的数据传输方法包括:判断终端设备与服务器之间是否建立有传输控制协议tcp连接;

如果所述终端设备与所述服务器间建立有传输控制协议tcp连接,则所述终端设备通过用户数据报协议udp将指定数据发送给所述服务器。

进一步的,该方法还包括:如果所述终端设备与所述服务器间没有建立tcp连接,则所述终端设备通过tcp与服务器经交握程序建立连接。

进一步的,判断终端设备与服务器之间是否建立有tcp连接包括:判断所述终端设备是否向所述服务器发送确认字符ack数据包;如果所述终端设备已经向所述服务器发送ack数据包,则所述终端设备通过tcp向所述服务器发送第一心跳数据包;判断所述终端设备是否接收到所述服务器发送的基于第一心跳数据包生成的第一应答数据包。

进一步的,该方法还包括:对原始数据进行分包,获得至少一个数据包;对于每个数据包,按预设的数据包标识分配规则为其分配标识;将每个具有标识的数据包作为指定数据。

进一步的,该方法还包括:接收所述服务器发送的基于所述服务器接收到的具有标识的数据包生成的传输反馈信息;判断所述传输反馈信息中是否包含有丢失数据包信息;如果所述传输反馈信息中包含有所述丢失数据包信息,则所述终端设备通过udp将所述丢失数据包重新发送给所述服务器。

进一步的,判断所述终端设备通过udp连续发送的数据包的数量是否大于等于预设阈值;如果所述终端设备通过udp连续发送的数据包的数量大于等于所述预设阈值,则所述终端设备停止发送数据包,并通过tcp向所述服务器发送第二心跳数据包;判断所述终端设备是否接收到所述服务器发送的基于所述第二心跳数据包生成的第二应答数据包;如果所述终端设备接收到所述服务器发送的基于所述第二心跳数据包生成的第二应答数据包,则所述终端设备通过udp继续向所述服务器发送数据包。

为了实现上述目的,根据本申请的另一方面,提供了一种终端设备。

根据本申请的终端设备包括:判断模块,用于判断终端设备与服务器之间是否建立有tcp连接;数据传输模块,用于在所述终端设备与所述服务器间建立有tcp连接时,则通过udp将指定数据发送给所述服务器。

进一步的,该设备还包括:交握模块,用于在所述终端设备与所述服务器间没有建立tcp连接时,通过tcp与服务器经交握程序建立连接。

进一步的,判断模块包括:ack数据包判断单元,用于判断所述终端设备是否向所述服务器发送ack数据包;心跳数据包传输单元,用于所述终端设备已经向所述服务器发送ack数据包时,通过tcp向所述服务器发送第一心跳数据包;应答数据包判断单元,用于判断所述终端设备是否接收到所述服务器发送的基于第一心跳数据包生成的第一应答数据包。

进一步的,该设备包括:数据分包模块,用于对原始数据进行分包,获得至少一个数据包;标识分配模块,用于对于每个数据包,按预设的数据包标识分配规则为其分配标识;指定数据确定单元,用于将每个具有标识的数据包作为指定数据。

在本申请实施例中,采用tcp与udp相结合的方式,通过判断tcp连接建立与否获知终端设备与服务器之间的网络通讯状态,并在tcp连接建立后采用udp将数据快速的发送给服务器,达到了只有在终端设备与服务器之间存在有网络连接时,终端设备才通过udp将数据发送给服务器的目的,从而实现了在保证数据传输完整性的前提下提高数据传输速度的技术效果,进而解决了tcp由于滑动窗口机制、流量控制机制以及拥塞控制等数据传输机制导致的数据传输较慢的技术问题。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例的一种数据传输方法的流程示意图;

图2为本申请提供的另一种数据传输方法的流程示意图;

图3为本申请提供的另一种数据传输方法的流程示意图;

图4为本申请提供的另一种数据传输方法的流程示意图;

图5为本申请提供的另一种数据传输方法的流程示意图;

图6为本申请提供的一种终端设备的结构示意图;

图7为本申请提供的另一种终端设备的结构示意图;

图8为本申请提供的另一种终端设备的结构示意图;

图9为本申请提供的另一种终端设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

此外,术语“连接”应做广义理解。例如,“连接”可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

根据本申请实施例,提供了一种数据传输方法,图1为本申请实施例的一种数据传输方法,如图1所示,该数据传输方法包括步骤s101和步骤s102:

s101判断终端设备与服务器之间是否建立有传输控制协议tcp连接;

tcp连接由终端设备端发起,经交握程序完成连接的建立,其中,首先由终端设备向服务器发送syn数据包给服务器端,之后服务器端收到syn数据包,回应一个synack数据包,最后终端设备收到服务器端的syn数据包,回应一个ack数据包,完成tcp连接的建立。因此通过判断终端设备是否向服务器发送ack数据包即可判断终端设备与服务器之间是否建立有tcp连接。

具体的,在无人机运行过程中,飞控数据(如位置信息、时间信息、飞和姿态信息等)会随着无人机的运行实时产生,同时由于无人机在空中飞行时所处区域的网络信号的稳定性较差,时常会出现无人机与服务器间由于网络信号不稳定导致飞控数据无法成功发送至服务器的问题出现。而采用本申请的数据传输方法,首先判断无人机与服务器之间是否建立有tcp连接,也就是说首先判断无人机是否向服务器发送了tcp建立过程中的第三次握手数据包,即ack数据包,即可获知无人机与服务器间是否建立有tcp连接,当无人机与服务器间建立有tcp连接时,则说明无人机与服务器之间存在网络连接,能够保证数据传输的完整性。

需要说明的是,指定数据可以是无人机运行过程中实时产生的飞控数据、智能机器人移动过程中产生的路径信息或是数据采集装置通过传感器实时采集的环境数据等,本申请并不对指定数据的类型做具体限定。

s102如果终端设备与服务器间建立有传输控制协议tcp连接,则终端设备通过用户数据报协议udp将指定数据发送给服务器。

用户数据报协议(userdatagramprotocol,udp)是一种简单的面向无连接的,不可靠的数据报的传输层(transportlayer)协议,因此无需在终端设备与服务器之间建立连接,即可将数据发送出去,但无需建立连接的传输方式会在终端设备处于无网络信号或网络信号不稳定的区域时使数据丢失,因此本申请在判断终端设备与服务器之间建立有tcp连接后,即终端设备和服务器间存在网络信号时,才将指定数据通过udp发送给服务器,避免数据在传输过程中的丢失。

具体的,在无人机运行过程中,无人机飞控数据一旦无法顺利的发送至服务器,则会导致操作人员或是无人机控制后台无法获知无人机的飞行位置,在无人机损坏或是飞入无网络信号的区域时,将无法通过飞控数据寻找无人机,使无人机丢失。在本实施例中,当判断无人机与服务器间已经建立有tcp时,才会将无人机产生的飞控数据通过udp发送给服务器,由于udp自身传输速度较快,可以将实时产生的飞控数据不堆积的发送给服务器,避免了原有无人机仅采用tcp传输导致的数据传输缓慢和飞控数据堆积的问题

s103如果终端设备与服务器间没有建立tcp连接,则终端设备通过tcp与服务器经交握程序建立连接。

在判断终端设备与服务器间没有建立tcp连接时,则无法确认终端设备与服务器之间是否能够建立tcp连接,若简单的通过udp将指定数据发送给服务器,很容易导致数据无法被服务器接收,数据在传输过程中丢失。因此需要终端设备通过tcp与服务器经交握程序建立连接,以判断终端设备当前是否处于有网络信号的区域,以保证数据传输的完整性。

具体的,当无人机启动运行后,首先需要判断无人机是否与服务器间建立有tcp连接,如果还没有建立tcp连接,则可能导致飞控数据无法及时发送至服务器,因此当判断无人机与服务器间没有建立有tcp连接时,则需要立即在终端设备与服务器间建立tcp连接,为后续的数据传输做好准备。

在本申请实施例中,采用tcp与udp相结合的方式,通过判断tcp连接建立与否获知终端设备与服务器之间的网络通讯状态,并在tcp连接建立后采用udp将数据快速的发送给服务器,达到了只有在终端设备与服务器之间存在有网络连接时,终端设备才通过udp将数据发送给服务器的目的,从而实现了在保证数据传输完整性的前提下提高数据传输速度的技术效果,进而解决了tcp由于滑动窗口机制、流量控制机制以及拥塞控制等数据传输机制导致的数据传输较慢的技术问题。

在一个可行的实施方案中,图2为本申请提供的另一种数据传输方法的流程示意图,如图2所示,在执行步骤s101时,可通过步骤s201至步骤s204实现:

s201判断终端设备是否向服务器发送确认字符ack数据包;

由于tcp连接建立过程中,终端设备向服务器发送ack(acknowledgement确认字符)数据包是交握程序中的第三次握手,因此判断终端设备是否向服务器发送ack数据包即可确认终端设备与服务器间是否建立有tcp连接。

具体的,在无人机运行过程中,飞控数据(如位置信息、时间信息、飞和姿态信息等)会随着无人机的运行实时产生,同时由于无人机在空中飞行时所处区域的网络信号的稳定性较差,时常会出现无人机与服务器间由于网络信号不稳定导致飞控数据无法成功发送至服务器的问题出现。而采用本申请的数据传输方法,首先判断无人机与服务器之间是否建立有tcp连接,也就是说首先判断无人机是否向服务器发送了tcp建立过程中的第三次握手数据包,即ack数据包,即可获知无人机与服务器间是否建立有tcp连接,当无人机与服务器间建立有tcp连接时,则说明无人机与服务器之间存在网络连接,能够保证数据传输的完整性。

s202如果终端设备已经向服务器发送ack数据包,则终端设备通过tcp向服务器发送第一心跳数据包;

又由于存在终端设备在发送ack数据包时网络信号缺失或不稳定,导致ack数据包没有成功的发送至服务器,使得之后udp传输的数据在传输过程中丢失,因此本实施例在判断终端设备向服务器发送ack数据包后,还向服务器发送第一心跳数据包,调换在指定数据传输前的最后一次数据包的发送端,也就是说将服务器向终端设备发送第一应答数据包作为指定传输数据的起点,在终端设备能够接收到服务器发送的数据时也就说明当前时刻的终端设备处于存在网络信号的区域,此时传输数据能够降低数据丢失的概率。

具体的,由于无人机的飞行高度与飞行速度,随时都有可能丢失网络信号,因此如果当无人机刚刚向服务器发送ack数据包后,即进入了没有网络信号或是网络信号不稳定的区域导致ack数据包没有成功发送至服务器,将会导致通过udp传输的数据在传输过程中丢失。为避免上述情况的发生,在终端设备与服务器之间建立有tcp连接之后,终端设备还向服务器发送第一心跳数据包,以判断是否能够接收到服务器发送的基于该第一心跳数据包的第一应答数据包,如果能够接收到第一应答数据包,则说明服务器与终端设备之间的网络通信状况良好,与判断终端设备是否发送了ack数据包相比,能够解决前述的极端情况,更好的保证数据在传输时的稳定性。

s203判断终端设备是否接收到服务器发送的基于第一心跳数据包的第一应答数据包。

在接收到服务器发送的基于第一心跳数据包的第一应答数据包后,终端设备才会进一步将指定数据通过udp发送给服务器,在判断终端设备向服务器发送ack数据包之后的心跳数据包发送与应答数据包的接收步骤,可以进一步的确定终端设备与服务器之间的网络通信环境,以避免传输过程中的数据丢失。

具体的,在无人机接收到服务器发送的基于第一心跳数据包的第一应答数据包后,再将飞控数据通过udp发送给服务器,以保证数据传输的完整性。

在一个可行的实施方案中,图3为本申请提供的另一种数据传输方法的流程示意图,如图3所示,本数据传输方法还包括步骤s301至步骤s303:

s301对原始数据进行分包,获得至少一个数据包;

udp在传输数据时,并不会对数据进行分包和对数据包进行标识标记,因此在数据传输时无法获知具体是哪些数据在传输过程中丢失,因此本实施例通过对原始数据进行分包得到数据包,为下一步骤为其分配标识做准备。

具体的,飞控数据会在固定时间间隔的循环产生(如每秒产生一个飞控数据)或是在系统中预先设定好飞控数据的数据大小(如每个数据包均为5千字节),则可按每秒产生的飞控数据作为一个数据包或是每5千字节、每10千字节的作为一个数据包的方式进行分包。

需要说明的是,对原始数据进行分包的方式可根据具体需求选择,如根据数据的产生时间、数据的大小、数据的类型等,本申请在此并不做具体限定。

s302对于每个数据包,按预设的数据包标识分配规则为其分配标识;

为了在传输过程中能够使服务器判断出丢失的数据包是哪些数据包,则需要为每个数据包分配标识,该标识是能预先设定好的且相邻数据包间的标识均存在关联关系,服务器通过判断接收到的数据包中相邻数据包之间的标识是否与预先设定好的规则一致即可判断是否有数据包丢失。

具体的,在无人机中,标识可通过阿拉伯数字的方式顺序的为数据包分配,当选择每秒产生的飞控数据作为一个数据包时,根据数据包产生时间的先后顺序为其分配标识,即第一个产生的飞控数据作为第一个数据包为其分配标识为1,第二个产生的飞控数据作为第二个数据包为其分配标识为2,以此类推。

需要说明的是,标识可以是顺序的阿拉伯数字如1、2、3等、也可以是字母与阿拉伯数字的组合,如a1、a2、a3等,具体的标识可以根据实际实施时选择,本申请并不做具体限定。

s303将每个具有标识的数据包作为指定数据。

在通过udp传输数据时则将数据包以及每个数据包对应的标识一并发送给服务器。

在一个可行的实施方案中,在执行步骤s303后,图4为本申请提供的另一种数据传输方法的流程示意图,如图4所示,本数据传输方法还包括步骤s401至步骤s403:

s401接收服务器发送的基于服务器接收到的具有标识的数据包生成的传输反馈信息;

由于在数据传输前已经为每个数据包都分配有标识,因此服务器通过判断所接收到的数据包的标识,即可获知在传输过程中丢失的数据包,并将具有该丢失数据包信息的传输反馈信息发送给终端设备。

具体的,以步骤s302的标识分配规则为数据包分配标识后,通过udp将其传输给服务器,如发送的数据为标识为1的数据包、标识为2的数据包和标识为3的数据包,而服务器只接收到了标识为1和3的数据包,在此时服务器可通过判断获知标识为2的数据包在传输过程中丢失,则会产生内容包含有标识为2的传输反馈信息发送给无人机,在无人机接收到该传输反馈信息后需判断其中的信息,以确定是否需要数据重传。

s402判断传输反馈信息中是否包含有丢失数据包信息;

传输反馈信息中包含有丢失数据包信息则说明存在数据丢失,需要确定所丢失的数据包是哪些并重新传输所丢失的数据包,丢失数据包信息可以是数据包的标识,通过判断传输反馈信息中是否有标识项信息则可以判断是否有丢失数据包信息。

具体的,在无人机中执行本数据传输方法时,丢失数据包信息可以为标识项信息,如传输反馈信息中包含有标识项信息为2,则说明标识为2的数据包丢失,需要重传;或是传输反馈信息中包含有标识项信息为2、7、11和12则说明标识为2、7、11和12的数据包丢失,需要重传;当不存在标识信息时,则说明没有数据包在传输过程中丢失,也就无需重新传输。

s403如果传输反馈信息中包含有丢失数据包信息,则终端设备通过udp将丢失数据包重新发送给服务器。

在判断传输反馈信息中存在有丢失数据包信息后,则将丢失数据包通过udp发送给服务器,以保证数据传输的完整性。

在一个可行的实施方案中,在执行步骤s403后,图5为本申请提供的另一种数据传输方法的流程示意图,如图5所示,本数据传输方法还包括步骤s501至步骤s504:

s501判断终端设备通过udp连续发送的数据包的数量是否大于等于预设阈值;

为获知数据传输过程中终端设备与服务器之间的网络通信环境,需要通过终端设备与服务器之间传递的心跳数据包和应答数据包来实现。当数据包传输达到一定数据后,即于等于预设阈值(如100个或200个等),则需要停止数据包的传输,并判断当前的网络通信环境如何,并在网络通信环境良好的情况下继续发送数据包,避免数据包的丢失。

s502如果终端设备通过udp连续发送的数据包的数量大于等于预设阈值,则终端设备停止发送数据包,并通过tcp向服务器发送第二心跳数据包;

当终端设备发送的数据包的数量大于等于预设阈值时,则停止数据包的发送,并通过tcp向服务器发送第二心跳数据包,并在后续判断是否能够接收到服务器基于该第二心跳数据包生成的的第二应答数据包。

s503判断终端设备是否接收到服务器发送的基于第二心跳数据包生成的第二应答数据包;

s504如果终端设备接收到服务器发送的基于第二心跳数据包生成的第二应答数据包,则终端设备通过udp继续向服务器发送数据包。

能够接收到服务器发送的基于第二心跳数据包生成的第二应答数据包,则说明终端设备与服务器之间的网络通信环境良好,因此可以继续将数据包通过udp发送给服务器。当无法接收到服务器发送的基于第二心跳数据包生成的第二应答数据包时,则说明终端设备与服务器之间的网络通信环境较差,数据无法通过udp发送给服务器,也就不能继续将数据包通过udp发送。

基于相同的技术构思,本申请实施例还提供了一种终端设备,图6为本申请提供的一种终端设备的结构示意图,如图6所示,该终端设备包括:

61判断模块,用于判断终端设备与服务器之间是否建立有tcp连接;

62数据传输模块,用于在终端设备与服务器间建立有tcp连接时,则通过udp将指定数据发送给服务器。

本实施例通过在终端设备中设置61判断模块和62第一数据传输模块,并通过61判断模块判断终端设备与服务器之间是否建立有tcp连接,62第一数据传输模块在终端设备与服务器间建立有tcp连接时,则通过udp将指定数据发送给服务器,达到了只有在终端设备与服务器之间存在有tcp连接时,终端设备才通过udp将数据发送给服务器的目的,从而实现了在保证数据传输完整性的前提下提高数据传输速度的技术效果,进而解决了原有在终端设备中设置的tcp传输模块由于滑动窗口机制、流量控制机制以及拥塞控制等数据传输机制导致的数据传输较慢的技术问题。

在一个可行的实施方案中,图7为本申请提供的另一种终端设备的结构示意图,如图7所示,本终端设备还包括:

71交握模块,用于在终端设备与服务器间没有建立tcp连接时,通过tcp与服务器经交握程序建立连接。

在一个可行的实施方案中,图8为本申请提供的另一种终端设备的结构示意图,如图8所示,61判断模块包括以下单元:

611ack数据包判断单元,用于判断终端设备是否向服务器发送ack数据包;

612心跳数据包传输单元,用于终端设备已经向服务器发送ack数据包时,通过tcp向服务器发送第一心跳数据包;

613应答数据包判断单元,用于判断终端设备是否接收到服务器发送的基于第一心跳数据包的第一应答数据包。

在一个可行的实施方案中,图9为本申请提供的另一种终端设备的结构示意图,如图9所示,本终端设备还包括:

81数据分包模块,用于对原始数据进行分包,获得至少一个数据包;

82标识分配模块,用于对于每个数据包,按预设的数据包标识分配规则为其分配标识;

83指定数据确定单元,用于将每个具有标识的数据包作为指定数据。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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