一种数据传输方法、装置、电子设备及存储介质与流程

文档序号:16544183发布日期:2019-01-08 20:43阅读:159来源:国知局
一种数据传输方法、装置、电子设备及存储介质与流程

本发明涉及网络技术领域,尤其涉及一种数据传输方法、装置、电子设备及存储介质。



背景技术:

由于移动网络和互联网的普及,数据传输已经成为互联网中不可缺少的一部分,远程服务器的数据和客户端数据完整性传输成为一个需要解决的难题。尤其是在网络游戏中,客户端玩家的数据从开始的单机保存逐渐转移到服务器存储以及同步,在此过程中就需要确保数据传输的完整性。

现有技术中,通常是在发送端对待传输的数据整体生成校验码,然后将待传输的数据和生成的校验码一并发送给接收端,然后在接收端对收到的数据按相同算法生成校验码,并将该校验码与收到的校验码相比较,若相同,则验证成功,数据传输完整,否则,数据不完整,需要重新传输。当传输的数据量较大时,重传数据将占用较多时间和耗费网络资源,成本较高。



技术实现要素:

有鉴于此,本发明实施例提供一种数据传输方法、装置、电子设备及存储介质,能够节省时间和网络资源,高效实现数据完整性传输。

第一方面,本发明实施例提供一种数据传输方法,包括:

将待传输的数据分割为多个数据包,其中每个数据包对应生成检验码;

向服务器发送每个数据包及其检验码,以供服务器根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

结合第一方面,在第一方面的一种实施方式中,所述方法包括:

监测每个数据包及其检验码是否传输成功,若否,重新传输数据包及其检验码。

结合第一方面,在第一方面的另一种实施方式中,所述方法包括:

若数据传输失败,检查与服务器之间的网络连接,若网络断开,暂停传输,待网络连接后重新传输。

结合第一方面,在第一方面的再一种实施方式中,所述将待传输的数据分割为多个数据包,进一步为:

将待传输的数据分割为多个10-20k数据包。

结合第一方面,在第一方面的又一种实施方式中,所述每个数据包对应生成检验码,包括:

根据每个数据包所包含的字节,累加生成检验码。

结合第一方面,在第一方面的又一种实施方式中,所述服务器为无状态服务器。

第二方面,本发明实施例提供一种数据传输方法,包括:

接收客户端发送的数据包及其检验码,其中所述数据包由客户端将传输的数据分割得到,并且每个数据包对应生成检验码;

根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

结合第二方面,在第二方面的一种实施方式中,所述根据所述检验码判断每个数据包是否完整,包括:

对于每个数据包,采用与客户端相同算法生成检验码,将该生成的检验码与接收到的该数据包的检验码相比较,若相同,说明该数据包传输完整,若不同,说明该数据包传输不完整。

第三方面,本发明实施例提供一种客户端,包括:

分割模块,用于将待传输的数据分割为多个数据包,其中每个数据包对应生成检验码;

发送模块,用于向服务器发送每个数据包及其检验码,以供服务器根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

结合第三方面,在第三方面的一种实施方式中,所述客户端包括:

监测模块,用于监测每个数据包及其检验码是否传输成功,若否,重新传输数据包及其检验码。

结合第三方面,在第三方面的另一种实施方式中,所述客户端包括:

检查模块,用于若数据传输失败,检查与服务器之间的网络连接,若网络断开,暂停传输,待网络连接后重新传输。

结合第三方面,在第三方面的再一种实施方式中,所述分割模块,包括:

分割子模块,用于将待传输的数据分割为多个10-20k数据包。

结合第三方面,在第三方面的又一种实施方式中,所述分割模块,包括:

生成子模块,用于根据每个数据包所包含的字节,累加生成检验码。

结合第三方面,在第三方面的又一种实施方式中,所述服务器为无状态服务器。

第四方面,本发明实施例提供一种服务器,包括:

接收模块,用于接收客户端发送的数据包及其检验码,其中所述数据包由客户端将传输的数据分割得到,并且每个数据包对应生成检验码;

判断模块,用于根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

结合第四方面,在第四方面的一种实施方式中,所述判断模块,包括:

比较子模块,用于对于每个数据包,采用与客户端相同算法生成检验码,将该生成的检验码与接收到的该数据包的检验码相比较,若相同,说明该数据包传输完整,若不同,说明该数据包传输不完整。

第五方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的方法。

第六方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一所述的方法。

本发明实施例提供的一种数据传输方法、装置、电子设备及存储介质,首先将待传输的数据分割为多个数据包,其中每个数据包对应生成检验码;然后向服务器发送每个数据包及其检验码,以供服务器根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。这样,通过将数据分割为多个数据包分别进行传输,一旦由于网络不稳定导致数据需要重新传输时,只需重传未传输成功的单个数据包及其检验码即可,因此,本发明实施例能够节省时间和网络资源,高效实现数据完整性传输。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明的数据传输方法实施例一的流程图;

图2为本发明的数据传输装置实施例一的结构图;

图3为本发明的数据传输方法实施例二的流程图;

图4为本发明的数据传输装置实施例二的结构图;

图5为本发明电子设备一个实施例的结构示意图。

具体实施方式

下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

一方面,本发明实施例提供一种数据传输方法(用于在客户端侧执行),如图1所示,包括:

步骤101:将待传输的数据分割为多个数据包,其中每个数据包对应生成检验码;

本步骤中,以网络游戏为例,待传输的数据通常为玩家数据,例如包括玩家数据存档、金币、资源、关卡、地图等。玩家数据通常以m为单位,数据量较大,本步骤中优选分割为多个数据包,每个数据包10-20k。其中,每个数据包对应生成检验码,该检验码既作为每个数据包完整性检验使用,也可同时作为每个数据包的次序码使用。作为一可选的实施例,在本步骤101之后、步骤102之前可以先将所有数据包的检验码按数据包顺序(数据分割时的次序)向服务器发送,以供服务器在步骤102中根据检验码判断是否收到所有的数据包,例如,分割得到的数据包为5个,检验码分别为a1、a2、a3、a4、a5,服务器后续收到的数据包所对应的检验码如果为a1、a2、a3、a4、a5,则说明收到所有的数据包,如果为a1、a2、a3、a4,或者为a1、a3、a4、a5,则说明未收到所有的数据包。

本步骤一种实施例中,所述每个数据包对应生成检验码,包括:

根据每个数据包所包含的字节,累加生成检验码。

检验码可以是16位、32位或64位等。例如,可以参考以下代码实现:

具体的,比如包数据为:7661726b2f,此时生成的检验码为:0x76+0x61+0x72+0x6b+0x2f=0x1e3,其中0x表示16进制。

这种检验码生成方式相对于现有技术数据完整性验证算法如sha1(securehashalgorithm,安全哈希算法)和md5(messagedigestalgorithm5,消息摘要算法第五版)来说,算法简便快捷,对硬件要求低,准确率也较高。

本步骤进一步的实施例中,所述服务器为无状态服务器。

对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧是指两个来自相同发起者的请求在服务器端是否具备上下文关系。如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。而对于无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。简单来讲,有状态服务器通常与客户端保持长连接,而无状态服务器采用短连接,无需保持长连接,仅在需要时与客户端建立连接并通信。

对于有状态服务器,为了实现与客户端之间的数据安全传输,通常采用sha1和md5算法进行安全加密,此时,服务器和客户端之间需建立长连接,双方互传密钥等数据,从而实现数据的安全传输,然而,由于md5算法的运算步骤数为64步,sha1算法的运算步骤数为80步,故此过程整体需要耗费较多时间和网络资源;而对于无状态服务器,由于服务器和客户端之间采用短连接,将无法采用sha1和md5算法对数据进行安全加密。本实施例中,提出了上述新的检验码的生成方式,算法简单,也无需服务器和客户端互传密钥等数据,并且数据包大小仅为10-20k,故特别适用于无状态服务器,其能够大大提高数据传输速率,节省时间和网络资源。

本步骤另一种实施例中,检验码只作为每个数据包完整性检验使用,同时生成每个数据包的次序码,次序码按数据分割时的次序生成即可,例如01、02、03...10。这样,在本步骤101之后、步骤102之前可以先将所有数据包的检验码和次序码向服务器发送,此时在步骤102中只需向服务器发送每个数据包及其次序码,无需再发送检验码,以供服务器在步骤102中根据所述次序码判断是否收到所有的数据包,以及根据所述检验码判断每个数据包是否完整,从而完成对传输的数据的完整性验证。

步骤102:向服务器发送每个数据包及其检验码,以供服务器根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

作为一可选实施例,上述数据传输方法可以包括:

监测每个数据包及其检验码是否传输成功,若否,重新传输数据包及其检验码。

其中,是否传输成功可以通过判断是否收到服务器返回的传输成功确认消息来得知。本实施例中,只重新传输未传输成功的单个数据包及其检验码,相对于现有技术需要将传输的数据整体重新传输来说,能够节省时间和网络资源。

作为另一可选实施例,上述数据传输方法可以包括:

若数据传输失败,检查与服务器之间的网络连接,若网络断开,暂停传输,待网络连接后重新传输。

这样,通过判断是否是网络故障的原因导致数据传输失败,能够避免一味重传浪费时间。

本发明实施例中,首先将待传输的数据分割为多个数据包,其中每个数据包对应生成检验码;然后向服务器发送每个数据包及其检验码,以供服务器根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。这样,通过将数据分割为多个数据包分别进行传输,一旦由于网络不稳定导致数据需要重新传输时,只需重传未传输成功的单个数据包及其检验码即可,因此,本发明实施例能够节省时间和网络资源,高效实现数据完整性传输。

与上述方法相对应,本发明实施例提供一种数据传输装置(即客户端),如图2所示,包括:

分割模块11,用于将待传输的数据分割为多个数据包,其中每个数据包对应生成检验码;

发送模块12,用于向服务器发送每个数据包及其检验码,以供服务器根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

进一步的,所述客户端可以包括:

监测模块,用于监测每个数据包及其检验码是否传输成功,若否,重新传输数据包及其检验码。

这样,只重新传输未传输成功的单个数据包及其检验码,相对于现有技术需要将传输的数据整体重新传输来说,能够节省时间和网络资源。

进一步的,所述客户端可以包括:

检查模块,用于若数据传输失败,检查与服务器之间的网络连接,若网络断开,暂停传输,待网络连接后重新传输。

这样,通过判断是否是网络故障的原因导致数据传输失败,能够避免一味重传浪费时间。

进一步的,所述分割模块,可以包括:

分割子模块,用于将待传输的数据分割为多个10-20k数据包。

进一步的,所述分割模块,可以包括:

生成子模块,用于根据每个数据包所包含的字节,累加生成检验码。

这种检验码生成方式相对于现有技术数据完整性验证算法如sha1(securehashalgorithm,安全哈希算法)和md5(messagedigestalgorithm5,消息摘要算法第五版)来说,算法简便快捷,对硬件要求低,准确率也较高。

进一步的,所述服务器为无状态服务器。

另一方面,本发明实施例提供一种数据传输方法(用于在服务器侧执行),如图3所示,包括:

步骤201:接收客户端发送的数据包及其检验码,其中所述数据包由客户端将传输的数据分割得到,并且每个数据包对应生成检验码;

本步骤中,客户端对数据进行分割的相关操作与前述步骤101相同,此处不再赘述。

步骤202:根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

本步骤中,根据所述检验码判断每个数据包是否完整,具体可以包括:

对于每个数据包,采用与客户端相同算法生成检验码,将该生成的检验码与接收到的该数据包的检验码相比较,若相同,说明该数据包传输完整,若不同,说明该数据包传输不完整。

本发明实施例中,通过将数据分割为多个数据包分别进行传输,一旦由于网络不稳定导致数据需要重新传输时,只需重传未传输成功的单个数据包及其检验码即可,因此,本发明实施例能够节省时间和网络资源,高效实现数据完整性传输。

与上述方法相对应,本发明实施例提供一种数据传输装置(即服务器),如图4所示,包括:

接收模块21,用于接收客户端发送的数据包及其检验码,其中所述数据包由客户端将传输的数据分割得到,并且每个数据包对应生成检验码;

判断模块22,用于根据所述检验码判断是否收到所有数据包以及每个数据包是否完整,从而完成对传输的数据的完整性验证。

本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

进一步的,所述判断模块可以包括:

比较子模块,用于对于每个数据包,采用与客户端相同算法生成检验码,将该生成的检验码与接收到的该数据包的检验码相比较,若相同,说明该数据包传输完整,若不同,说明该数据包传输不完整。

再一方面,本发明实施例还提供一种电子设备,如图5所示,可以实现本发明图1或3所示方法实施例的流程,该电子设备包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一方法实施例所述的方法。

处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1或3所示方法实施例的描述,在此不再赘述。

该电子设备以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(5)其他具有数据交互功能的电子设备。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例所述的方法步骤。

本发明的实施例还提供一种应用程序,所述应用程序被执行以实现本发明任一方法实施例提供的方法。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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