CN104486396B - 一种跨平台的网络数据的传输方法 - Google Patents

一种跨平台的网络数据的传输方法 Download PDF

Info

Publication number
CN104486396B
CN104486396B CN201410758792.9A CN201410758792A CN104486396B CN 104486396 B CN104486396 B CN 104486396B CN 201410758792 A CN201410758792 A CN 201410758792A CN 104486396 B CN104486396 B CN 104486396B
Authority
CN
China
Prior art keywords
data
byte
array
stream
byte stream
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
CN201410758792.9A
Other languages
English (en)
Other versions
CN104486396A (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.)
China Telecom Digital Intelligence Technology Co Ltd
Original Assignee
China Telecom Group System Integration 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 China Telecom Group System Integration Co Ltd filed Critical China Telecom Group System Integration Co Ltd
Priority to CN201410758792.9A priority Critical patent/CN104486396B/zh
Publication of CN104486396A publication Critical patent/CN104486396A/zh
Application granted granted Critical
Publication of CN104486396B publication Critical patent/CN104486396B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种跨平台的网络数据的传输方法。该方法包括:通信源端选择对应的序列化规则,将需发送的数据集合中的每个数据都序列化为相应的字节流,将各个数据序列化后的字节流排列成S1;在S1之前加入长度标志和数据集合类型标志,形成S3;对S3进行CRC16校验,将校验数据加入到S3之后,形成S4;通信源端将S4发送到通信目的端;通信目的端对S4进行解析,得到S1、数据集合类型标志和校验数据;对S1进行CRC16校验,如果校验不通过,请求通信源端重新发送数据;如果校验通过,则对S1进行反序列化,得到通信源端所发送的数据集合。通过使用上述方法,可以方便不同平台之间的数据流的序列化、打包、传输和解析,减少跨平台通信的数据传输量,提高传输效率。

Description

一种跨平台的网络数据的传输方法
技术领域
本发明涉及网络通信技术,特别涉及一种跨平台的网络数据的传输方法。
背景技术
随着网络技术的发展和智能手机技术的发展,跨平台网络通信技术已越来越多的应用于开发过程中。但是,在不同平台中,使用的编程语言、支持的数据类型种类、数据长度、字节序和字符编码等多不相同,从而导致同样的通信数据流在不同的平台中会被解释为不同的数据,所以各个平台之间无法直接通信。
目前,常用的跨平台通信方案有:基于简单对象访问协议(SOAP,Simple ObjectAccess Protocol)消息格式的网络服务器(Web Service)和基于JSON(JavaScript ObjectNotation)消息格式的RESTful服务等。
然而,由于Web Service完全基于XML、XSD(XML Schema)等标准,通过Web Service定义的接口获得Web Service的描述语言(WSDL)的描述文件,各平台依据此WSDL描述文件获得Web Service的接口信息。该方法还存在以下缺点:
1、在网络通信层,采用HTTP协议进行通信,其交互性受HTTP通讯协议中的“请求-响应”机制限制,导致其在通信交互时实时性相对较低。
2、在数据协议方面,该方法使用基于XML协议的消息格式,而XML是一种可扩展标记语言,为符合其格式将导致非有效数据过多,导致数据通信相对需要耗费更多流量、占用较大带宽。
另外,上述基于JSON消息格式的RESTful服务,则采用JSON(JavaScript ObjectNotation)格式,该方法也存在以下缺点:JSON格式需要在每个传输数据中加入数据名称,从而增大了传输数据量,也占用较大带宽,导致数据传输效率有一定降低。
发明内容
有鉴于此,本发明提供一种跨平台的网络数据的传输方法,从而可以方便不同平台之间的数据流的序列化、打包、传输和解析,减少跨平台通信的数据传输量,提高传输效率。
本发明的技术方案具体是这样实现的:
一种跨平台的网络数据的传输方法,该方法包括:
A、通信源端根据数据类型选择对应的序列化规则,将需发送的数据集合中的每个数据都序列化为相应的字节流;
B、通信源端按照所述数据集合中各数据的排列顺序,将各个数据序列化后的字节流排列成第一字节流S1;
C、通信源端在所述第一字节流S1之前加入4个字节的用于表示第一字节流S1的长度的长度标志,形成第二字节流S2;
D、通信源端在所述第二字节流S2之前加入2个字节的用于表示所传输的数据的数据集合类型的数据集合类型标志,形成第三字节流S3;
E、通信源端对所述第三字节流S3进行CRC16校验,得到两个字节的校验数据;在所述第三字节流S3之后加入所述校验数据,形成第四字节流S4;
F、通信源端与通信目的端建立网络连接,将第四字节流S4发送到通信目的端;
G、通信目的端对所接收到的第四字节流S4进行解析,得到与所述第四字节流S4对应的第一字节流S1、数据集合类型标志和校验数据;
H、通信目的端对所得到的第一字节流S1进行CRC16校验,如果校验不通过,则请求通信源端重新发送数据;如果校验通过,则执行步骤I;
I、通信目的端根据所得到的数据集合类型标志确定所得到的第一字节流S1的数据集合类型,根据数据集合类型选择对应的序列化规则,对第一字节流S1进行反序列化,得到通信源端所发送的数据集合。
较佳的,所述序列化规则包括:数组数据序列化规则和非数组数据序列化规则。
较佳的,所述将需发送的数据集合中的每个数据都序列化为相应的字节流包括:
当所述数据为数组数据时,使用预设的数组数据序列化规则将所述数据序列化为相应的字节流;
当所述数据为非数组数据时,使用预设的非数组数据序列化规则将所述数据序列化为相应的字节流。
较佳的,所述非数组数据序列化规则包括:
将非数组数据被序列化的字节流的第1个字节设为数据类型标志字节TA,用于标志该数据的数据类型以及该数据是否为数组数据;
将非数组数据被序列化的字节流的第2个字节L0和第3个字节L1组成一个整型数据,表示该非数组数据编码化后的数据所包含的字节的长度n;
将所述非数组数据编码化为相应的n个字节,排列在所述字节L1之后;
对于布尔类型的非数组数据,在序列化时统一编码化为一个字节,该字节取值为1时表示真,取值为0时表示假。
较佳的,所述由L0和L1组成的整型数据的取值范围为0-65535。
较佳的,对于非数组数据中的string类型数据,使用utf-8编码化。
较佳的,所述数组数据序列化规则包括:
将数组数据被序列化的字节流的第1个字节设为数据类型标志字节TA,用于标志该数据的数据类型以及该数据是否为数组数据;
将数组数据被序列化的字节流的第2个字节AL0和第3个字节AL1组成一个整型数据,表示该数组数据的数组中所包含的数据的数量;
对于所述数组数据的数组中的每一个数据,将该数据编码化为相应的n个字节,并在所述n个字节之前加入由两个字节L0和L1组成的整型数据,形成该数据的序列化字节流;其中,所述整型数据表示所述n个字节流的长度n;
将所述数组数据的数组中的每一个数据的序列化字节流按各个数据在数组中的排列顺序依次排列在所述字节AL1之后,形成该数组数据的序列化字节流。
较佳的,所述数据类型标志字节TA的前7位组成1个7位2进制数,表示该数据的数据类型;
所述数据类型标志字节TA的第8位存放数组标志,表示该数据是否为数组数据。
较佳的,所述由AL0和AL1组成的整型数据的取值范围为0-65535。
较佳的,所述由L0和L1组成的整型数据的取值范围为0-65535。
如上可见,在本发明所提供的跨平台的网络数据的传输方法中,通信源端可将一组数据使用自定义的支持数组数据和非数组数据的轻量级编码方式进行编码,并计算CRC16校验后,统一按照网络字节序方式进行打包,然后利用socket网络连接将序列化后的数据发送到通信目的端;通信目的端将接收到的符合网络字节序的字节流初步解析后,进行CRC16校验,如校验失败,要求通信源端重发数据,如校验成功,则按照与通信源端相同的方式将数据解码,得到通信源端发送的数据。由于在上述的跨平台的网络数据的传输方法中,在对数据进行打包时未加入数据名称等过多的非有效数据,因此上述编码方式是一种轻量级编码方式,相比于现有技术中常用的跨平台通信方法具有数据传输效率高的特点。另一方面,由于上述的跨平台的网络数据的传输方法中的编码方法支持非数组数据和数组数据,并具有校验重发机制,因此相对于现有技术中常用的数据传输方法,具有兼容数据类型多,传输可靠性好的特点。
附图说明
图1为本发明实施例中的跨平台的网络数据的传输方法的流程示意图。
图2为本发明的实施例中的非数组数据序列化规则的示意图。
图3为本发明的实施例中的数据类型标志字节TA的结构示意图。
图4为本发明的实施例中的数组数据序列化规则的示意图。
图5为本发明的实施例中的字节流S4的结构示意图。
图6为本发明的具体实施例一中的个人信息数据表序列化后的字节流数据示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
在不同的平台中,虽然所使用的编程语言、支持的数据类型种类、数据长度、字节序和字符编码等多不相同,导致同样的通信数据流在不同的平台中会被解释为不同的数据,无法直接通信,但是,只要在通信过程中对传输的数据进行数据长度、字节序和字符编码按照一定的规则进行处理,即可实现不同平台和不同编程语言开发的程序通信,使通信目的端正确识别通信源端发送的数据。
在本发明的技术方案中,在两个终端进行的网络数据通信准备阶段和通信过程中,可以将向另一方传输数据的一方称为通信源端,并将接受另一方传输数据的一方称为通信目的端。
在本发明的技术方案中,提供了一种跨平台的网络数据的传输方法。
图1为本发明实施例中的跨平台的网络数据的传输方法的流程示意图。如图1所示,本发明实施例中的跨平台的网络数据的传输方法主要包括如下所述的步骤:
步骤11,通信源端根据数据类型选择对应的序列化规则,将需发送的数据集合中的每个数据都序列化为相应的字节流。
在本发明的技术方案中,为了确保通信目的端可正确反序列化通信源端发送到的已序列化的字节流数据,通信源端和通信目的端可以使用相同的序列化规则对数据进行编码和解码(分析)。
较佳的,在本发明的具体实施例中,所述序列化规则包括:数组数据序列化规则和非数组数据序列化规则。
其中,图2为本发明的实施例中的非数组数据序列化规则的示意图,如图2所示,在本发明的一个较佳实施例中,所述非数组数据序列化规则可以包括如下所述的步骤:
步骤A1,将非数组数据被序列化的字节流的第1个字节设为数据类型标志字节TA,用于标志该数据的数据类型以及该数据是否为数组数据。
图3为本发明的实施例中的数据类型标志字节TA的结构示意图。如图3所示,较佳的,在本发明的具体实施例中,所述数据类型标志字节TA的第8位TA7存放的是数组标志,表示该数据是否为数组数据。例如,TA7的值为0时表示该数据为非数组数据,值为1时表示该数据为数组数据。所述数据类型标志字节的第8位TA7的取值与数据类型的对应关系可参见下述的表1:
是否为数组数据 TA7取值
非数组数据 0
数组数据 1
表1
所述数据类型标志字节TA的前7位(TA0~TA6)组成1个7位2进制数,取值范围为0-127,表示该数据的数据类型。
较佳的,在本发明的具体实施例中,所述数据类型标志字节TA的前7位的取值与数据类型的对应关系可参见下述的表2:
数据类型 TA0-TA6取值
bool 0
int 1
byte 2
char 3
short 4
long 5
string 6
float 7
double 8
表2
步骤A2,将非数组数据被序列化的字节流的第2个字节L0和第3个字节L1组成一个整型数据,表示该非数组数据编码化后的数据所包含的字节的长度n。
较佳的,在本发明的具体实施例中,上述由L0和L1组成的整型数据的取值范围为0-65535。
步骤A3,将所述非数组数据编码化为相应的n个字节D0,D1,D2…,Dn,排列在所述字节L1之后。
步骤A4,对于布尔(bool或boolean或BOOL)类型的非数组数据,在序列化时统一编码化为一个字节,该字节取值为1时表示真,取值为0时表示假。
较佳的,在本发明的具体实施例中,对于非数组数据中的string类型数据,统一使用utf-8编码化。
另外,图4为本发明的实施例中的数组数据序列化规则的示意图。如图4所示,在本发明的一个较佳实施例中,所述数组数据序列化规则包括:
步骤a1,将数组数据被序列化的字节流的第1个字节设为数据类型标志字节TA,用于标志该数据的数据类型以及该数据是否为数组数据。
在本发明的技术方案中,上述数据类型标志字节TA的内容和含义与上述步骤A1中的数据类型标志字节TA的内容和含义相同,在此不再赘述。
步骤a2,将数组数据被序列化的字节流的第2个字节AL0和第3个字节AL1组成一个整型数据,表示该数组数据包含多少个同样类型的数据,即表示该数组数据的数组中所包含的数据的数量。
较佳的,在本发明的具体实施例中,上述由AL0和AL1组成的整型数据的取值范围为0-65535。
步骤a3,对于所述数组数据的数组中的每一个数据,将该数据编码化为相应的n个字节D1,D2…,Dn,并在所述n个字节D1,D2…,Dn之前加入由两个字节L0和L1组成的整型数据,形成该数据的序列化字节流。其中,所述整型数据表示所述n个字节流D1,D2…,Dn的长度n。
较佳的,在本发明的具体实施例中,上述由L0和L1组成的整型数据的取值范围为0-65535。
步骤a4,将所述数组数据的数组中的每一个数据的序列化字节流按各个数据在数组中的排列顺序依次排列在所述字节AL1之后,形成该数组数据的序列化字节流。例如,如图4所示的序列化字节流。
因此,较佳的,在本发明的具体实施例中,所述步骤11中的将需发送的数据集合中的每个数据都序列化为相应的字节流可以具体包括:
当所述数据为数组数据时,使用预设的数组数据序列化规则将所述数据序列化为相应的字节流;
当所述数据为非数组数据时,使用预设的非数组数据序列化规则将所述数据序列化为相应的字节流。
步骤12,通信源端按照所述数据集合中各数据的排列顺序,将各个数据序列化后的字节流排列成第一字节流S1(例如,图5中的V0~Vn)。
步骤13,通信源端在所述第一字节流S1之前加入4个字节的用于表示第一字节流S1的长度的长度标志(例如,图5中的4个字节L0~L3),形成第二字节流S2。
步骤14,通信源端在所述第二字节流S2之前加入2个字节的用于表示所传输的数据的数据集合类型的数据集合类型标志(例如,图5中的2个字节T0和T1),形成第三字节流S3。
较佳的,在本发明的具体实施例中,所述数据集合类型标志用于表示所传输的数据的数据集合类型。例如,当所述数据集合类型标志的取值为1时,表示所传输的数据为数据集合;当所述数据集合类型标志的取值为0时,表示所传输的数据不是数据集合。
步骤15,通信源端对所述第三字节流S3进行CRC16校验,得到两个字节的校验数据;在所述第三字节流S3之后加入所述校验数据(例如,图5中的2个字节C0和C1),形成第四字节流S4。
步骤16,通信源端与通信目的端建立网络连接,将第四字节流S4发送到通信目的端。
较佳的,在本发明的具体实施例中,所述网络连接可以是:Socket网络连接。
另外,较佳的,本发明中的网络传输方式也并不局限于使用Socket网络连接进行通信,也可适用其它网络数据传输方式或非网络数据传输方式。
步骤17,通信目的端对所接收到的第四字节流S4进行解析,得到与所述第四字节流S4对应的第一字节流S1、数据集合类型标志和校验数据。
步骤18,通信目的端对所得到的第一字节流S1进行CRC16校验,如果校验不通过,则请求通信源端重新发送数据;如果校验通过,则执行步骤19。
步骤19,通信目的端根据所得到的数据集合类型标志确定所得到的第一字节流S1的数据集合类型,根据数据集合类型选择对应的序列化规则,对第一字节流S1进行反序列化,得到通信源端所发送的数据集合。
通过上述的步骤11~19,通信源端即可将一组数据使用自定义的支持数组数据和非数组数据的轻量级编码方式进行编码,并计算CRC16校验后,统一按照网络字节序方式进行打包,然后利用socket网络连接将序列化后的数据发送到通信目的端;通信目的端将接收到的符合网络字节序的字节流初步解析后,进行CRC16校验,如校验失败,要求通信源端重发数据,如校验成功,则按照与通信源端相同的方式将数据解码,得到通信源端发送的数据。由于在上述的跨平台的网络数据的传输方法中,在对数据进行打包时未加入数据名称等过多的非有效数据,因此上述编码方式是一种轻量级编码方式,相比于现有技术中常用的跨平台通信方法具有数据传输效率高的特点。另一方面,由于上述的跨平台的网络数据的传输方法中的编码方法支持非数组数据和数组数据,并具有校验重发机制,因此相对于现有技术中常用的数据传输方法,具有兼容数据类型多,传输可靠性好的特点。
以下将以一个具体的实施例为例,对本发明的技术方案进行详细的介绍。
具体实施例一:
例如,假设通信源端需要通过网络向通信目的端传递一张个人信息数据表的数据(参加下述的表3),其中,该个人信息数据表中包括string,bool,short,int等非数组类型的数据,也包括一个string数组类型数据。为描述方面,下面描述字节值时均以16进制表示。
数据名称 取值 数据类型 是否数组
姓名 李四 string
年龄 27 short
性别(男否) bool
工资 4500 int
婚否 bool
兴趣 {"足球","篮球","乒乓球"} String[]
表3:个人信息数据表
根据上述的个人信息数据表可知,该个人信息数据表中的数据“姓名”取值为“李四”,数据类型为string,属于非数组类型的数据。因此,根据数据类型标志字节TA的定义可知,在对该数据进行序列化时,字节TA的前7位(TA0~TA6)的取值为6(表示该数据为string类型数据,参见上述的表2),TA7的取值为0(表示该数据为非数组数据,参见上述的表1),故字节TA的取值应为0x0D;该数据的取值“李四”进行utf-8编码后为6个字节:E6 9D 8E E59B 9B,因此其字节长度标志为0006。综上,按照非数组数据序列化规则可知,上述数据被序列化后的字节流为:0D 00 06 E6 9D 8E E5 9B 9B。
该个人信息数据表中的数据“年龄”取值为“27”,数据类型为是short,属于非数组类型的数据。根据数据类型标志字节TA的定义可知,在对该数据进行序列化时,字节TA的前7位(TA0~TA6)的取值为4(表示该数据为short类型数据,参见上述的表2),TA7的取值为0(表示该数据为非数组数据,参见上述的表1),故字节TA的取值应为0x08;该数据的取值“27”按bigEndian方式编码为:001B,长度为2个字节。综上,按照非数组数据序列化规则可知,上述数据被序列化后的字节流为:08 00 02 00 1B。
该个人信息数据表中的数据“性别男否”取值为“真”,数据类型为bool,属于非数组类型的数据。根据数据类型标志字节TA的定义可知,在对该数据进行序列化时,字节TA的前7位(TA0~TA6)的取值为0(表示该数据为bool类型数据),TA7的取值为0(表示该数据为非数组数据),故字节TA的取值应为0x00;该数据的取值“假”对应的编码为1个字节:0x01。综上,按照非数组数据序列化规则可知,上述数据被序列化后的字节流为:00 00 01 01。
该个人信息数据表中的数据“工资”取值为“4500”,数据类型为int,属于非数组类型的数据。根据数据类型标志字节TA的定义可知,在对该数据进行序列化时,字节TA的前7位(TA0~TA6)的取值为1(表示该数据为int类型数据),TA7的取值为0(表示该数据为非数组数据),故字节TA的取值应为0x02;该数据的取值“4500”对应的编码为4个字节:00 00 1194。综上,按照非数组数据序列化规则可知,上述数据被序列化后的字节流为:02 00 04 0000 11 94。
该个人信息数据表中的数据“婚否”取值为“假”,数据类型为bool,属于非数组类型的数据。根据数据类型标志字节TA的定义可知,在对该数据进行序列化时,字节TA的前7位(TA0~TA6)的取值为0(表示该数据为bool类型数据),TA7的取值为0(表示该数据为非数组数据),故字节TA的取值应为0x00;该数据的取值“假”对应的编码为1个字节:0x00。综上,按照非数组数据序列化规则可知,上述数据被序列化后的字节流为:00 00 01 00。
该个人信息数据表中的数据“兴趣”为一维字符串数组,取值为{"足球","篮球","乒乓球"},属于数组类型的数据。根据数据类型标志字节TA的定义可知,在对该数据进行序列化时,字节TA的前7位(TA0~TA6)的取值为6(表示该数据为String[]类型数据),TA7的取值为1(表示该数据为数组数据),故字节TA的取值应为0x1B,数组长度为3个字节,因此该数组长度标志的两个字节为:0003;该数组数据的取值"足球","篮球","乒乓球"对应的utf-8编码分别为E8 B6 B3 E7 90 83(长度为6个字节),E7 AF AE E7 90 83(长度为6个字节),E4 B9 92 E4 B9 93 E7 90 83(长度为9个字节)。综上,按照非数组数据序列化规则可知,上述数据被序列化后的字节流为:
1B 00 03 00 06 E8 B6 B3 E7 90 83 00 06 E7 AF AE E7 90 83 00 09 E4 B992 E4 B9 93 E7 90 83。
然后,将上述数据集合中的每个数据序列化后的字节流按各个数据的排列顺序排列为第一字节流S1:
0D 00 06 E6 9D 8E E5 9B 9B 08 00 02 00 1B 00 00 01 01 02 00 04 00 0011 94 00 00 01 00 1B 00 03 00 06 E8 B6 B3 E7 90 83 00 06 E7 AF AE E7 90 83 0009 E4 B9 92 E4 B9 93 E7 90 83。
上述第一字节流S1共59个字节,59对应的16进制表示为0x3B。因此,在S1前面加上4个字节的长度标志,得到下面的第二字节流S2:
00 00 00 3B 0D 00 06 E6 9D 8E E5 9B 9B 08 00 02 00 1B 00 00 01 01 0200 04 00 00 11 94 00 00 01 00 1B 00 03 00 06 E8 B6 B3 E7 90 83 00 06 E7 AF AEE7 90 83 00 09 E4 B9 92 E4 B9 93 E7 90 83。
在上述第二字节流S2之前加上两个字节的数据集合类型标志,此集合类型为1,故应加字节:0x01,得到如下的第三字节流S3:
00 01 00 00 00 3B 0D 00 06 E6 9D 8E E5 9B 9B 08 00 02 00 1B 00 00 0101 02 00 04 00 00 11 94 00 00 01 00 1B 00 03 00 06 E8 B6 B3 E7 90 83 00 06 E7AF AE E7 90 83 00 09 E4 B9 92 E4 B9 93 E7 90 83。
对第三字节流S3进行CRC16校验,得到两个字节的校验结果:AE F4。将此两字节加到第三字节流S3之后,得到新的第四字节流S4:
00 01 00 00 00 3B 0D 00 06 E6 9D 8E E5 9B 9B 08 00 02 00 1B 00 00 0101 02 00 04 00 00 11 94 00 00 01 00 1B 00 03 00 06 E8 B6 B3 E7 90 83 00 06 E7AF AE E7 90 83 00 09 E4 B9 92 E4 B9 93 E7 90 83 AE F4。
到此为止,上述所得到的第四字节流S4即为表3中的个人信息数据按照本申请中所提出的序列化方法打包后的字节流数据,如图6所示。
因此,通信源端可以与通信目的端建立Socket网络连接,然后通过所述Socket网络连接将上述的第四字节流S4发送到通信目的端。
通信目的端根据上述的序列化方法对所接收到的第四字节流S4进行解析,从而可以得到与所述第四字节流S4对应的第一字节流S1、数据集合类型标志和校验数据。
通信目的端对所得到的第一字节流S1进行CRC16校验,并将检验结果与从上述所接收到的第四字节流S4中解析得到的校验数据进行比对,如果两者不一致,则表示校验不通过,通信目的端将请求通信源端重新发送数据;如果两者一致,则表示校验通过,通信目的端则根据所得到的数据集合类型标志确定所得到的第一字节流S1的数据集合类型,然后再根据数据集合类型选择对应的序列化规则,对第一字节流S1进行反序列化,从而最终得到通信源端所发送的数据集合。
由于在上述的跨平台的网络数据的传输方法中,并不依赖于某种硬件平台或某种程序语言的一种或多种特性,因此本方法可跨硬件平台使用,也可跨语言平台使用。例如,在实际应用环境中,服务器与各种移动终端的网络通信,无论服务器端的服务程序是使用C++、C#或JAVA等哪种语言开发的,也无论客户端所使用的是Android、IOS或者WindowsMobile等哪种平台,均可使用上述的跨平台的网络数据的传输方法来进行数据传输,从而可以实现各个平台之间的直接通信,方便不同平台之间的数据流的序列化、打包、传输和解析。
另外,与现有技术中常用的数据传输方法相比,本发明中所提出的跨平台的网络数据的传输方法在对数据进行打包时未加入数据名称等过多的非有效数据,因此是一种轻量级编码方式,可以减少跨平台通信的数据传输量,提高传输效率;此外,由于本发明中所提出的跨平台的网络数据的传输方法中具有校验重发机制,因此还具有兼容数据类型多,传输可靠性好的特点。
例如,本发明中的跨平台的网络数据的传输方法与基于SOAP消息格式的WebService方式的比较:
由于Web Service基于SOAP消息格式,而SOAP消息又包括一个可选的SOAP标头和一个必需的SOAP体块的XML文档,而在使用XML打包数据时,需加入大量的标签数据,导致数据包包含大量的额外数据,加大了通信传输量,也降低了通信目标端的数据解析速度。
而在本发明中的跨平台的网络数据的传输方法中,在进行编码和解码时只需要加入少量的标识数据,因此非有效传输数据少,有效数据传输效率高。
再例如,本发明中的跨平台的网络数据的传输方法与基于JSON消息格式的RESTful服务方式的比较:
在使用JSON消息格式进行数据打包时,一般使用“名称/值”对的方式打包数据,因此需要在打包过程中加入名称和一些标识符号,因此导致打包后的数据量增大。
而在本发明中的跨平台的网络数据的传输方法中,在通信源端不会将数据名称加入到编码后数据中,只加入了2个字节的数据集合类型;而在每个通信数据的字节流中只加入1个字节的长度标识和2个字节的长度标识,从而使得打包后的数据量相对较少,提高了通信过程中的数据传输效率。
譬如,对于上述表3中所示的个人信息数据表,使用本发明中的跨平台的网络数据的传输方法,序列化之后得到的字节流只有63个字节。而使用JSON消息格式打包上述个人信息数据表时,需要传输数据名称,为方便起见,将数据名称定义为英文名,具体定义如下述表4所示(数据取值和表3相同):
表4
使用JSON消息格式将上述个人信息数据表打包后得到的字符串数据为:
{"name":"李四","isMale":true,"age":27,"hunfou":true,"salary":4500,"intrest":["足球","篮球","乒乓球"]}
将其使用utf-8编码后字节流为:
7B 22 6E 61 6D 65 22 3A 22 E6 9D 8E E5 9B 9B 22 2C 22 69 73 4D 61 6C65 22 3A 74 72 75 65 2C 22 61 67 65 22 3A 32 37 2C 22 68 75 6E 66 6F 75 22 3A74 72 75 65 2C 22 73 61 6C 61 72 79 22 3A 34 35 30 30 2C 22 69 6E 74 72 65 7374 22 3A 5B 22 E8 B6 B3 E7 90 83 22 2C 22 E7 AF AE E7 90 83 22 2C 22 E4 B9 92E4 B9 93 E7 90 83 22 5D 7D。
上述的字节流长度为110,共包含110个字节,远大于使用本发明中的跨平台的网络数据的传输方法所得到的序列化之后的字节流长度,因此可知,本发明中的跨平台的网络数据的传输方法的传输效率要高于现有技术中常用的数据传输方法。
此外,在现有技术中常用的数据传输方法中,一般只能传输普通类型的数据,例如,Boolean、char、Double、Float、Int、Short和Long等类型的数据,而不能传输数组数据、链表数据等复杂类型的数据,因此兼容性不好。而在本发明中的跨平台的网络数据的传输方法中,不但可以传输上述普通类型的数据,还可以传输由上述普通类型的数据组成的数组数据、链表数据等复杂类型的数据,因此兼容性好。而且,在本发明中的跨平台的网络数据的传输方法中,还使用了CRC16校验及错误数据重发机制,因此数据可靠性也很好。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种跨平台的网络数据的传输方法,其特征在于,该方法包括:
A、通信源端根据数据类型选择对应的序列化规则,将需发送的数据集合中的每个数据都序列化为相应的字节流;
B、通信源端按照所述数据集合中各数据的排列顺序,将各个数据序列化后的字节流排列成第一字节流S1;
C、通信源端在所述第一字节流S1之前加入4个字节的用于表示第一字节流S1的长度的长度标志,形成第二字节流S2;
D、通信源端在所述第二字节流S2之前加入2个字节的用于表示所传输的数据的数据集合类型的数据集合类型标志,形成第三字节流S3;
E、通信源端对所述第三字节流S3进行CRC16校验,得到两个字节的校验数据;在所述第三字节流S3之后加入所述校验数据,形成第四字节流S4;
F、通信源端与通信目的端建立网络连接,将第四字节流S4发送到通信目的端;
G、通信目的端对所接收到的第四字节流S4进行解析,得到与所述第四字节流S4对应的第一字节流S1、数据集合类型标志和校验数据;
H、通信目的端对所得到的第一字节流S1进行CRC16校验,如果校验不通过,则请求通信源端重新发送数据;如果校验通过,则执行步骤I;
I、通信目的端根据所得到的数据集合类型标志确定所得到的第一字节流S1的数据集合类型,根据数据集合类型选择对应的序列化规则,对第一字节流S1进行反序列化,得到通信源端所发送的数据集合。
2.根据权利要求1所述的方法,其特征在于,
所述序列化规则包括:数组数据序列化规则和非数组数据序列化规则。
3.根据权利要求2所述的方法,其特征在于,所述将需发送的数据集合中的每个数据都序列化为相应的字节流包括:
当所述数据为数组数据时,使用预设的数组数据序列化规则将所述数据序列化为相应的字节流;
当所述数据为非数组数据时,使用预设的非数组数据序列化规则将所述数据序列化为相应的字节流。
4.根据权利要求3所述的方法,其特征在于,所述非数组数据序列化规则包括:
将非数组数据被序列化的字节流的第1个字节设为数据类型标志字节TA,用于标志该数据的数据类型以及该数据是否为数组数据;
将非数组数据被序列化的字节流的第2个字节L0和第3个字节L1组成一个整型数据,表示该非数组数据编码化后的数据所包含的字节的长度n;
将所述非数组数据编码化为相应的n个字节,排列在所述字节L1之后;
对于布尔类型的非数组数据,在序列化时统一编码化为一个字节,该字节取值为1时表示真,取值为0时表示假。
5.根据权利要求4所述的方法,其特征在于:
所述由L0和L1组成的整型数据的取值范围为0-65535。
6.根据权利要求4所述的方法,其特征在于:
对于非数组数据中的string类型数据,使用utf-8编码化。
7.根据权利要求3所述的方法,其特征在于,所述数组数据序列化规则包括:
将数组数据被序列化的字节流的第1个字节设为数据类型标志字节TA,用于标志该数据的数据类型以及该数据是否为数组数据;
将数组数据被序列化的字节流的第2个字节AL0和第3个字节AL1组成一个整型数据,表示该数组数据的数组中所包含的数据的数量;
对于所述数组数据的数组中的每一个数据,将该数据编码化为相应的n个字节,并在所述n个字节之前加入由两个字节L0和L1组成的整型数据,形成该数据的序列化字节流;其中,所述由两个字节L0和L1组成的整型数据表示所述n个字节的长度n;
将所述数组数据的数组中的每一个数据的序列化字节流按各个数据在数组中的排列顺序依次排列在所述字节AL1之后,形成该数组数据的序列化字节流。
8.根据权利要求4或7所述的方法,其特征在于:
所述数据类型标志字节TA的前7位组成1个7位2进制数,表示该数据的数据类型;
所述数据类型标志字节TA的第8位存放数组标志,表示该数据是否为数组数据。
9.根据权利要求7所述的方法,其特征在于:
所述由AL0和AL1组成的整型数据的取值范围为0-65535。
10.根据权利要求7所述的方法,其特征在于:
所述由L0和L1组成的整型数据的取值范围为0-65535。
CN201410758792.9A 2014-12-10 2014-12-10 一种跨平台的网络数据的传输方法 Active CN104486396B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410758792.9A CN104486396B (zh) 2014-12-10 2014-12-10 一种跨平台的网络数据的传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410758792.9A CN104486396B (zh) 2014-12-10 2014-12-10 一种跨平台的网络数据的传输方法

Publications (2)

Publication Number Publication Date
CN104486396A CN104486396A (zh) 2015-04-01
CN104486396B true CN104486396B (zh) 2017-12-26

Family

ID=52760900

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410758792.9A Active CN104486396B (zh) 2014-12-10 2014-12-10 一种跨平台的网络数据的传输方法

Country Status (1)

Country Link
CN (1) CN104486396B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648569B (zh) * 2015-11-02 2021-04-20 腾讯科技(深圳)有限公司 目标序列化实现方法和装置
CN106713167A (zh) * 2015-11-16 2017-05-24 中兴通讯股份有限公司 数据码流发送方法及装置
CN105868364B (zh) * 2016-03-29 2020-06-12 中国电子科技集团公司第二十八研究所 一种基于字节流的结构化数据表示方法
CN106528259B (zh) * 2016-11-04 2019-07-09 网易(杭州)网络有限公司 数据发送、接收方法及其装置
CN109039542A (zh) * 2018-08-16 2018-12-18 深圳市共进电子股份有限公司 一种交互信令的传送方法及装置
CN112347063A (zh) * 2019-08-07 2021-02-09 中国石油化工股份有限公司 一种实现地震数据共享的方法及存储介质
CN110830164A (zh) * 2019-10-22 2020-02-21 武汉理工光科股份有限公司 一种用于物联网设备通信的数据序列化方法
CN112214516A (zh) * 2020-10-29 2021-01-12 株洲中车时代电气股份有限公司 数据序列化和反序列化的方法及装置
CN114383627A (zh) * 2022-01-10 2022-04-22 重庆思骑科技有限公司 一种骑行导航数据显示方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571939A (zh) * 2011-12-26 2012-07-11 广州市玄武无线科技有限公司 一种跨平台通信方法及系统
CN102981884A (zh) * 2012-11-22 2013-03-20 用友软件股份有限公司 序列化装置和序列化方法
CN103475905A (zh) * 2013-09-25 2013-12-25 浙江大学 云环境下基于网络连接复用的影像数据块高效传输方法
CN103778248A (zh) * 2014-02-18 2014-05-07 成都致云科技有限公司 高效自描述的复杂数据对象序列化方法
CN104113390A (zh) * 2014-06-20 2014-10-22 广州市集智信息科技有限公司 一种移动网络数据序列化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098537B2 (en) * 2012-12-20 2015-08-04 Oracle International Corporation Techniques for aligned run-length encoding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571939A (zh) * 2011-12-26 2012-07-11 广州市玄武无线科技有限公司 一种跨平台通信方法及系统
CN102981884A (zh) * 2012-11-22 2013-03-20 用友软件股份有限公司 序列化装置和序列化方法
CN103475905A (zh) * 2013-09-25 2013-12-25 浙江大学 云环境下基于网络连接复用的影像数据块高效传输方法
CN103778248A (zh) * 2014-02-18 2014-05-07 成都致云科技有限公司 高效自描述的复杂数据对象序列化方法
CN104113390A (zh) * 2014-06-20 2014-10-22 广州市集智信息科技有限公司 一种移动网络数据序列化方法

Also Published As

Publication number Publication date
CN104486396A (zh) 2015-04-01

Similar Documents

Publication Publication Date Title
CN104486396B (zh) 一种跨平台的网络数据的传输方法
TWI377819B (en) System and method for history driven optimization of web services communication
CN103177015B (zh) 网页图像展示方法和系统
CN106170922A (zh) 数据的源编码和解码的设备和方法
CN106776986B (zh) 一种可配置的表单扩展信息传递方法
EP2219117A1 (en) A processing module, a device, and a method for processing of XML data
CN103532959A (zh) 一种跨平台网络通信方法
CN102096704B (zh) 一种xml的压缩方法和装置
CN102541926B (zh) 一种数据交换处理方法、设备和系统
Guo et al. Experimental evaluation of the packet reception performance of LoRa
CN103902539B (zh) 可扩展标记语言数据解析方法及装置
Rakhmanov et al. Compression of GNSS data with the aim of speeding up communication to autonomous vehicles
CN105071990B (zh) 一种通用的信息系统接口测试方法及装置
CN102708106B (zh) Exi 编码器
CN107181794B (zh) 基于dimse消息发送与接收的dicom网络传输方法
CN110830164A (zh) 一种用于物联网设备通信的数据序列化方法
CN102379087B (zh) 压缩方法、解压缩方法、压缩单元、解压缩单元以及压缩文档
Lin et al. Direct-mapping-based MIMO-FBMC underwater acoustic communication architecture for multimedia signals
CN115630614B (zh) 数据传输方法、装置、电子设备与介质
CN108040041A (zh) 一种基于业务驱动的图像差异传输协议设计系统及方法
CN105005496B (zh) 一种跨语言转换网络数据包定义文件的处理系统及方法
CN107277127A (zh) 一种基于jersey框架的数据传输方法
CN105793842B (zh) 序列化消息之间的转换方法和装置
CN103200251B (zh) 图片传输方法、系统和装置
Huang et al. Integrated spatial modulation and STBC-VBLAST design toward efficient MIMO transmission

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
CP03 Change of name, title or address

Address after: Room 1308, 13th floor, East Tower, 33 Fuxing Road, Haidian District, Beijing 100036

Patentee after: China Telecom Digital Intelligence Technology Co.,Ltd.

Address before: 10 / F, Guanhua building, 118 Xizhimennei street, Xicheng District, Beijing 100035

Patentee before: CHINA TELECOM GROUP SYSTEM INTEGRATION Co.,Ltd.

CP03 Change of name, title or address