CN109167750B - 一种数据包传输方法、装置、电子设备及存储介质 - Google Patents

一种数据包传输方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN109167750B
CN109167750B CN201810741729.2A CN201810741729A CN109167750B CN 109167750 B CN109167750 B CN 109167750B CN 201810741729 A CN201810741729 A CN 201810741729A CN 109167750 B CN109167750 B CN 109167750B
Authority
CN
China
Prior art keywords
field
byte
protocol
bits
data packet
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.)
Active
Application number
CN201810741729.2A
Other languages
English (en)
Other versions
CN109167750A (zh
Inventor
金淼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Internet Security Software Co Ltd
Original Assignee
Beijing Kingsoft Internet Security Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Internet Security Software Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201810741729.2A priority Critical patent/CN109167750B/zh
Publication of CN109167750A publication Critical patent/CN109167750A/zh
Application granted granted Critical
Publication of CN109167750B publication Critical patent/CN109167750B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/03Protocol definition or specification 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/02Protocol performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Communication Control (AREA)

Abstract

本发明的实施例公开了一种数据包传输方法、装置、电子设备及存储介质,涉及网络技术领域,能够避免字段名信息冗余,减小数据包,降低服务器的带宽成本。所述数据包传输方法包括:获取待发送的各字段的数据;按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;向对端设备发送生成的数据包。

Description

一种数据包传输方法、装置、电子设备及存储介质
技术领域
本发明涉及网络技术领域,尤其涉及一种数据包传输方法、装置、电子设备及存储介质。
背景技术
现网络游戏中存在服务器与移动设备网络交互场景,成千上万的移动设备客户端与服务器交互,导致服务器流量很大,在相同带宽下在同样网络环境下,数据包越大,服务器承载的人数会越少,为此需要减小数据包,以增加可服务的人数,降低服务器的带宽成本。
现有的网络游戏服务器中,网络协议大部分使用http+json协议进行网络传输,发明人在研究过程中发现,json协议冗余了字段名信息,在游戏应用场景会传输很多无用的字段名导致网络带宽占用过大。
发明内容
有鉴于此,本发明实施例提供一种数据包传输方法、装置、电子设备及存储介质,能够避免字段名信息冗余,减小数据包,降低服务器的带宽成本。
第一方面,本发明实施例提供一种数据包传输方法,包括:
获取待发送的各字段的数据;
按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
向对端设备发送生成的数据包。
结合第一方面,在第一方面的一种实施方式中,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
结合第一方面,在第一方面的另一种实施方式中,所述按照预设协议格式将所述待发送的各字段的数据生成数据包,包括:
当字段内容为正数时,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
结合第一方面,在第一方面的再一种实施方式中,当字段内容为负数时,去除最高位,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
结合第一方面,在第一方面的又一种实施方式中,所述压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,包括:
若当前字节是当前字段的最后一个字节,则当前字节的最高位写入0,若当前字节不是当前字段的最后一个字节,则当前字节的最高位写入1。
第二方面,本发明实施例提供一种数据包传输装置,包括:
获取模块,用于获取待发送的各字段的数据;
生成模块,用于按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
发送模块,用于向对端设备发送生成的数据包。
结合第二方面,在第二方面的一种实施方式中,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
结合第二方面,在第二方面的另一种实施方式中,所述生成模块包括:第一压缩子模块,用于当字段内容为正数时,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
结合第二方面,在第二方面的再一种实施方式中,所述生成模块包括:第二压缩子模块,用于当字段内容为负数时,去除最高位,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
结合第二方面,在第二方面的又一种实施方式中,所述第一压缩子模块和/或第二压缩子模块,包括:
写入子模块,用于若当前字节是当前字段的最后一个字节,则当前字节的最高位写入0,若当前字节不是当前字段的最后一个字节,则当前字节的最高位写入1。
第三方面,本发明实施例提供一种数据包传输方法,包括:
接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
解析所述数据包,得到所述各字段的数据。
结合第三方面,在第三方面的一种实施方式中,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
结合第三方面,在第三方面的另一种实施方式中,所述解析所述数据包,得到所述各字段的数据,包括:
当字段内容为正数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的数值。
结合第三方面,在第三方面的再一种实施方式中,当字段内容为负数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的绝对值,增加负号即得当前字段的数值。
第四方面,本发明实施例提供一种数据包传输装置,包括:
接收模块,用于接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
解析模块,用于解析所述数据包,得到所述各字段的数据。
结合第四方面,在第四方面的一种实施方式中,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
结合第四方面,在第四方面的另一种实施方式中,所述解析模块,包括:第一组合模块,用于当字段内容为正数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的数值。
结合第四方面,在第四方面的再一种实施方式中,所述解析模块,包括:第二组合模块,用于当字段内容为负数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的绝对值,增加负号即得当前字段的数值。
第五方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的方法。
第六方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一所述的方法。
本发明实施例提供的一种数据包传输方法、装置、电子设备及存储介质,其按照预设协议格式进行数据包传输,该预设协议格式包括协议头和协议体,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列,从而省去了字段名信息,因此,本发明实施例能够避免字段名信息冗余,减小数据包,降低服务器的带宽成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的数据包传输方法实施例一的流程图;
图2为本发明的数据包传输装置实施例一的结构图;
图3为本发明的数据包传输方法实施例二的流程图;
图4为本发明的数据包传输装置实施例二的结构图;
图5为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
现有技术中,JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式,它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在JS语言中,一切都是对象,其特点在于,采用键值对来保存JS对象。例如下面的语句:
{″firstName″:″Brett″,″lastName″:″McLaughlin″}
由此可知,json协议格式需要有字段名及对应的字段内容(数值或文本),因此,json协议冗余了字段名信息,在游戏应用场景会传输很多无用的字段名导致网络带宽占用过大。
一方面,本发明实施例提供一种数据包传输方法(用于在发送侧执行),如图1所示,包括:
步骤101:获取待发送的各字段的数据;
本步骤中,各字段例如是指网络游戏中需要传输数据的各字段。
步骤102:按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
本步骤一个实施例中,每个字段是否赋值标识由所述协议头中字节(byte)的一个位(bit)来表示。例如,可以用一个字节的8个位标识8个字段是否赋值,具体的,当位为1时表示相应的字段赋值,当位为0时表示相应的字段不赋值;当字段的数量大于8小于16时,可以用两个字节来进行标识,当字段的数量大于16小于24时,可以用三个字节来进行标识,以此类推。
例如,在一网络游戏场景,假设需要传输5个字段,分别为用户ID、地图名称、关卡序号、车辆型号、金币数量和体力值,其中,用户ID、关卡序号、车辆型号和金币数量这四个字段均为数值类型,分别为100889、3(表示第3关)、9001、100;体力值也是数值类型,但无需赋值;地图名称为文本类型,具体为S弯赛道。
本步骤一个实施例中,针对该网络游戏场景,假设预设顺序即为上述顺序,则传输的数据包可以为:
协议头:1111 1000(以二进制表示)、或者248(以十进制表示);
协议体:100889、S弯赛道、3、9001、100(数值内容均以十进制表示,考虑到内容较大,协议体不以二进制形式展示)。
由上可知,由于传输字段数量为6个(小于8),故预设协议格式中只需使用1个字节来表示协议头即可,协议头前5位均为1,表示用户ID、地图名称、关卡序号、车辆型号、金币数量这5个字段均赋值,第6位为0,表示体力值不赋值,第7、8位不存在,故为缺省值0。
由该实施例可知,按照预设协议格式进行数据包传输,该预设协议格式包括协议头和协议体,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容(无赋值的字段内容则不再传输),并按照所述预设顺序排列,从而省去了字段名信息,因此能够避免字段名信息冗余,减小数据包,降低服务器的带宽成本。
本步骤进一步的实施例中,所述步骤102可以包括以下两种情形,以在传输字段内容的同时对每个字段进行数据压缩,以进一步减小数据包。
情形一:
当字段内容为正数时,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节(第一次提取的对应第一字节,第二次提取的对应第二字节,以此类推)的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入(写入1或0,按照约定执行即可),若是,则当前字段压缩结束,不再继续提取。
进一步的,所述压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,包括:
若当前字节是当前字段的最后一个字节,则当前字节的最高位写入0,若当前字节不是当前字段的最后一个字节,则当前字节的最高位写入1。
例如,若某一字段的数值为3,由于现有操作系统通常为32位或64位,以32位为例,其在表示数值3时,包括4个字节,分别为00000000 00000000 00000000 00000011,其前面3个字节均为零,浪费了较多空间,故本实施例中采用可变长度压缩算法进行压缩,以节省空间。
按照本实施例的上述压缩算法,从低位开始,第一次提取7位得到0000011,由于当前提取的7位并非均为零,故将该7位作为压缩后字段的第一字节的后7位,然后继续提取7位,得到0000000,由于当前提取的7位均为零,则当前字段压缩结束,不再继续提取,并将压缩后字段的每个字节的最高位作为当前字段是否结束标识进行写入,即,由于压缩后字段只有1个字节且当前字节是当前字段的最后一个字节,则在该字节的最高位写入0,从而得到最终压缩后的字段(由一个字节表示)为:00000011,其中最高位为0,表示该字节是当前字段的最后一个字节,该字段的数值为该字节的后7位0000011,即数值为3。
对于其他字段,重复执行上述压缩算法即可。
这样,通过本实施例的可变长度压缩算法,能够大大节省字段长度,进一步减小数据包,降低服务器的带宽成本,并且多个字段的数值可以连续传输,也能准确区分开来。
再例如,若某一字段的数值为300,以32位操作系统为例,其在表示数值300时,包括4个字节,分别为00000000 00000000 00000001 00101100,其前面2个字节均为零,浪费了较多空间。
按照本实施例的上述压缩算法,从低位开始,第一次提取7位得到0101100,由于当前提取的7位并非均为零,故将该7位作为压缩后字段的第一字节的后7位,然后继续提取7位,得到0000010,由于当前提取的7位也并非均为零,故将该7位作为压缩后字段的第二字节的后7位,然后继续提取7位,得到0000000,由于当前提取的7位均为零,则当前字段压缩结束,并不再继续提取,并将压缩后字段的每个字节的最高位作为当前字段是否结束标识进行写入,即,由于压缩后字段有两个字节,第一字节后7位为0101100,且该第一字节不是当前字段的最后一个字节,则在该第一字节的最高位写入1,得到完整的第一字节10101100;第二字节后7位为0000010且该第二字节是当前字段的最后一个字节,则在该第二字节的最高位写入0,从而得到完整的第二字节00000010,最终压缩后的字段即为第一字节+第二字节=10101100 00000010。
情形二:
当字段内容为负数时,去除最高位,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节(第一次提取的对应第一字节,第二次提取的对应第二字节,以此类推)的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入(写入1或0,按照约定执行即可),若是,则当前字段压缩结束,不再继续提取。
进一步的,所述压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,包括:
若当前字节是当前字段的最后一个字节,则当前字节的最高位写入0,若当前字节不是当前字段的最后一个字节,则当前字节的最高位写入1。
由于字段顺序是预设顺序、且字段类型(数值或文本)是已知的,故本实施例中可以在协议头中增设数值类型的字段内容是否为负数标识,以方便对端设备识别是正数还是负数,例如可以用两个相邻位来表示一个数值类型字段的相关信息,具体的,第一个位仍然为是否赋值标识(1表示赋值,0表示不赋值),紧随其后的第二个位则为数值类型的字段内容是否为负数标识(例如可以用1表示负数,0表示正数)。而对于文本类型的字段内容,则可以继续使用1个位来进行表示(作为是否赋值标识)。
至于负数的压缩方式,和前面正数的压缩方式基本相同,唯一区别在于,需要预先去除负数最高位的1即可,故此处不再赘述。
本步骤进一步的实施例中,所述步骤102还可以包括:
若字段内容为文本类型,则采用snappy压缩算法。
Snappy是一个C++的用来压缩和解压缩的开发包,利用snappy压缩算法,可以提供高速压缩速度和合理的压缩率。
步骤103:向对端设备发送生成的数据包。
客户端和服务器互为对端设备,既可以是客户端向服务器发送生成的数据包,也可以是服务器向客户端发送生成的数据包。
本发明实施例中,按照预设协议格式进行数据包传输,该预设协议格式包括协议头和协议体,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容(无赋值的字段内容则不再传输),并按照所述预设顺序排列,从而省去了字段名信息和无赋值的字段内容,因此,本发明实施例能够避免字段名信息冗余,减小数据包,降低服务器的带宽成本。
与上述方法相对应,本发明实施例提供一种数据包传输装置(发送侧),如图2所示,包括:
获取模块11,用于获取待发送的各字段的数据;
生成模块12,用于按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
发送模块13,用于向对端设备发送生成的数据包。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步的,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
优选的,所述生成模块12包括:第一压缩子模块,用于当字段内容为正数时,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
优选的,所述生成模块12还包括:第二压缩子模块,用于当字段内容为负数时,去除最高位,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
进一步的,所述第一压缩子模块和/或第二压缩子模块,可以包括:
写入子模块,用于若当前字节是当前字段的最后一个字节,则当前字节的最高位写入0,若当前字节不是当前字段的最后一个字节,则当前字节的最高位写入1。
进一步的,所述生成模块12包括:
第三压缩子模块,用于若字段内容为文本类型,则采用snappy压缩算法。
另一方面,本发明实施例还提供一种数据包传输方法(用于在接收侧执行),如图3所示,包括:
步骤201:接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
本步骤一个实施例中,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
步骤202:解析所述数据包,得到所述各字段的数据。
本步骤一个实施例中,可以对应包括以下两种情形,以对收到的每个字段进行解压缩。
情形三(对应于前述情形一):
当字段内容为正数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的数值。
例如,以数值300的解压缩过程为例。由前述可知,数值300经可变长度压缩算法压缩后得到的二进制数为:10101100 00000010。
解压缩时,首先提取第一字节的后7位得到0101100,由于该第一字节的最高位为1,由此判断得知当前字段没有结束,故继续提取第二字节的后7位得到0000010,由于该第二字节的最高位为0,由此判断得知当前字段结束,则不再提取下一字节,将两次提取的字节按低到高的顺序进行组合,得到0000010 0101100,以十进制表示即得到数值300。
此处,对于如何判断数值类型的字段为正数还是负数,可以采用与前述相同的方式,即所述协议头中包括数值类型的字段内容是否为负数标识,根据该是否为负数标识进行判断即可。对于其他字段,重复执行上述解压缩算法即可。
情形四(对应于前述情形二):
当字段内容为负数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的绝对值,增加负号即得当前字段的数值。
负数的解压缩过程与正数的解压缩过程相仿,此处不再赘述。
本发明实施例中,按照预设协议格式进行数据包传输,该预设协议格式包括协议头和协议体,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容(无赋值的字段内容则不再传输),并按照所述预设顺序排列,从而省去了字段名信息,因此,本发明实施例能够避免字段名信息冗余,减小数据包,降低服务器的带宽成本。
与上述方法相对应,本发明实施例还提供一种数据包传输装置(接收侧),如图4所示,包括:
接收模块21,用于接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
解析模块22,用于解析所述数据包,得到所述各字段的数据。
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步的,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
进一步的,所述解析模块22包括:第一组合模块,用于当字段内容为正数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的数值。
进一步的,所述解析模块22还包括:第二组合模块,用于当字段内容为负数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的绝对值,增加负号即得当前字段的数值。
本发明实施例还提供一种电子设备,如图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-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (16)

1.一种数据包传输方法,其特征在于,包括:
获取待发送的各字段的数据;
按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
向对端设备发送生成的数据包;
其中,所述按照预设协议格式将所述待发送的各字段的数据生成数据包,包括:
当字段内容为正数时,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
2.一种数据包传输方法,其特征在于,包括:
获取待发送的各字段的数据;
按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
向对端设备发送生成的数据包;
其中,所述按照预设协议格式将所述待发送的各字段的数据生成数据包,包括:
当字段内容为负数时,去除最高位,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
3.根据权利要求1或2所述的数据包传输方法,其特征在于,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
4.根据权利要求1或2所述的数据包传输方法,其特征在于,所述压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,包括:
若当前字节是当前字段的最后一个字节,则当前字节的最高位写入0,若当前字节不是当前字段的最后一个字节,则当前字节的最高位写入1。
5.一种数据包传输装置,其特征在于,包括:
获取模块,用于获取待发送的各字段的数据;
生成模块,用于按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
发送模块,用于向对端设备发送生成的数据包;
其中,所述生成模块包括:
第一压缩子模块,用于当字段内容为正数时,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
6.一种数据包传输装置,其特征在于,包括:
获取模块,用于获取待发送的各字段的数据;
生成模块,用于按照预设协议格式将所述待发送的各字段的数据生成数据包;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
发送模块,用于向对端设备发送生成的数据包;
其中,所述生成模块包括:
第二压缩子模块,用于当字段内容为负数时,去除最高位,从低位开始,每次提取7位,判断当前提取的7位是否均为零,若否,则将当前提取的7位作为压缩后字段的对应字节的后7位,压缩后字段的对应字节的最高位作为当前字段是否结束标识进行写入,若是,则当前字段压缩结束,不再继续提取。
7.根据权利要求5或6所述的数据包传输装置,其特征在于,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
8.根据权利要求5或6所述的数据包传输装置,其特征在于,所述第一压缩子模块和/或第二压缩子模块,包括:
写入子模块,用于若当前字节是当前字段的最后一个字节,则当前字节的最高位写入0,若当前字节不是当前字段的最后一个字节,则当前字节的最高位写入1。
9.一种数据包传输方法,其特征在于,包括:
接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
解析所述数据包,得到所述各字段的数据;
其中,所述解析所述数据包,得到所述各字段的数据,包括:
当字段内容为正数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的数值。
10.一种数据包传输方法,其特征在于,包括:
接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
解析所述数据包,得到所述各字段的数据;
其中,所述解析所述数据包,得到所述各字段的数据,包括:
当字段内容为负数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的绝对值,增加负号即得当前字段的数值。
11.根据权利要求9或10所述的数据包传输方法,其特征在于,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
12.一种数据包传输装置,其特征在于,包括:
接收模块,用于接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
解析模块,用于解析所述数据包,得到所述各字段的数据;
其中,所述解析模块,包括:
第一组合模块,用于当字段内容为正数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的数值。
13.一种数据包传输装置,其特征在于,包括:
接收模块,用于接收对端设备发送的数据包,所述数据包由对端设备将待发送的各字段的数据按照预设协议格式生成而来;其中,所述预设协议格式包括协议头和协议体;其中,所述协议头包括字段是否赋值标识,并按照预设顺序排列;所述协议体包括赋值的字段对应的字段内容,并按照所述预设顺序排列;
解析模块,用于解析所述数据包,得到所述各字段的数据;
其中,所述解析模块,包括:
第二组合模块,用于当字段内容为负数时,逐一提取每个字节的后7位按低到高的顺序进行组合,根据每个字节的最高位判断当前字段是否结束,若结束,则不再提取下一字节,组合后的字节即为当前字段的绝对值,增加负号即得当前字段的数值。
14.根据权利要求12或13所述的数据包传输装置,其特征在于,每个字段是否赋值标识由所述协议头中字节的一个位来表示。
15.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行上述权利要求1-4、9-11任一所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述权利要求1-4、9-11任一所述的方法。
CN201810741729.2A 2018-07-06 2018-07-06 一种数据包传输方法、装置、电子设备及存储介质 Active CN109167750B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810741729.2A CN109167750B (zh) 2018-07-06 2018-07-06 一种数据包传输方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810741729.2A CN109167750B (zh) 2018-07-06 2018-07-06 一种数据包传输方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN109167750A CN109167750A (zh) 2019-01-08
CN109167750B true CN109167750B (zh) 2021-06-18

Family

ID=64897492

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810741729.2A Active CN109167750B (zh) 2018-07-06 2018-07-06 一种数据包传输方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN109167750B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110535840A (zh) * 2019-08-15 2019-12-03 北京嘉士宝科技有限公司 数据传输方法、装置以及存储介质
CN112788078B (zh) * 2019-11-07 2023-03-24 上海哔哩哔哩科技有限公司 数据传输方法、接收装置、发送装置和计算机设备
CN111163100B (zh) * 2019-12-31 2022-10-11 广州市百果园信息技术有限公司 数据结构、通信方法、装置、存储介质及设备
CN111556091A (zh) * 2020-03-20 2020-08-18 中国水产科学研究院东海水产研究所 可增减探测种类的数据打包方法、采集系统及存储介质
CN111711639B (zh) * 2020-06-29 2023-04-18 深圳前海微众银行股份有限公司 终端、数据传输方法、系统、和计算机可读存储介质
CN111835759B (zh) * 2020-07-10 2023-02-03 广东源泉科技有限公司 一种基于数据压缩的网络流量控制方法
CN112437064B (zh) * 2020-11-12 2023-01-17 深圳银星智能集团股份有限公司 数据传输方法、数据读取方法、装置、设备及存储介质
CN112584134B (zh) * 2020-12-07 2022-10-21 深圳市捷视飞通科技股份有限公司 视频会议码流的测试方法、装置、计算机设备和存储介质
CN114143387B (zh) * 2021-11-16 2023-11-14 广州三七极创网络科技有限公司 基于quic的应用层通讯方法、装置、存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2779577B1 (en) * 2013-03-15 2019-05-01 Samsung Electronics Co., Ltd. Data transmitting apparatus, data receiving apparatus, data transceiving system, method for transmitting data, and method for receiving data
CN103795421B (zh) * 2014-02-26 2017-05-24 活点信息技术有限公司 一种数据压缩及解压缩的方法
CN105516139B (zh) * 2015-12-09 2019-03-19 北京四达时代软件技术股份有限公司 一种网络数据的传输方法、装置及系统
CN107026887B (zh) * 2016-02-02 2019-12-06 上海交通大学 一种多媒体系统中快速信息交互方法及网络传输方法
CN105959298A (zh) * 2016-06-24 2016-09-21 乐视控股(北京)有限公司 数据传输方法及数据传输装置
CN107872422B (zh) * 2016-09-23 2020-01-10 杭州海康威视数字技术股份有限公司 一种数据传输方法、装置及电子设备

Also Published As

Publication number Publication date
CN109167750A (zh) 2019-01-08

Similar Documents

Publication Publication Date Title
CN109167750B (zh) 一种数据包传输方法、装置、电子设备及存储介质
US20140330894A1 (en) Method, terminal and system for implementing data sharing
CN112087487B (zh) 模型训练任务的调度方法、装置、电子设备及存储介质
CN108038398B (zh) 一种二维码解析能力测试方法、装置及电子设备
CN106896933B (zh) 将语音输入转换成文本输入的方法、装置和语音输入设备
CN110727782A (zh) 问答语料生成方法及系统
CN107707686B (zh) 设备标识方法和装置
CN108933968A (zh) 一种消息格式的转换方法、装置、存储介质及安卓终端
CN114372297A (zh) 一种基于消息摘要算法校验文件完整性的方法及装置
CN109344052B (zh) 一种接口自动化测试方法、装置及电子设备
CN110675133A (zh) 一种抢红包的方法、装置、电子设备及可读存储介质
CN115987625A (zh) 一种恶意流量检测方法、装置及电子设备
CN113162628B (zh) 一种数据编码方法、数据解码方法、终端和存储介质
CN115270161A (zh) 基于加密插件的加密方法、装置及相关产品
CN111494956B (zh) 任务数据的获取方法、装置及电子设备
CN109741756B (zh) 基于usb外接设备传输操作信号的方法及系统
CN108845995A (zh) 数据处理方法、装置、存储介质和电子装置
CN114338102A (zh) 安全检测方法、装置、电子设备及存储介质
CN115276889A (zh) 解码处理方法、装置、计算机设备及存储介质
CN112788078B (zh) 数据传输方法、接收装置、发送装置和计算机设备
CN114637531A (zh) 应用程序接口动态生成方法及装置
CN114143595A (zh) 一种视频壁纸播放方法、装置、电子设备及可读存储介质
CN112631945A (zh) 一种测试用例生成方法、装置及存储介质
CN106776857B (zh) 一种获取天气数据的方法、装置及电子设备
CN114168689A (zh) 生成结构化数据资产的方法、装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant