CN1838665B - 网络通信中不同字节序类型之间的适配方法 - Google Patents
网络通信中不同字节序类型之间的适配方法 Download PDFInfo
- Publication number
- CN1838665B CN1838665B CN2005100567342A CN200510056734A CN1838665B CN 1838665 B CN1838665 B CN 1838665B CN 2005100567342 A CN2005100567342 A CN 2005100567342A CN 200510056734 A CN200510056734 A CN 200510056734A CN 1838665 B CN1838665 B CN 1838665B
- Authority
- CN
- China
- Prior art keywords
- byte sequence
- styles
- sequence styles
- platform
- information
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种网络通信中不同字节序类型之间的适配方法,包括四个步骤:设置适配前后的平台字节序类型信息、获取需要适配的数据、根据需要适配数据的数据类型和适配前后的平台字节序类型信息进行字节序转换、提供适配后的数据。当平台字节序类型信息不同或者发生变化时,只需要修改配置信息就可以,而不需要多个版本的类似代码或者修改程序代码本身,能够适应各种平台环境及其变化的要求,便于使用和维护,同时也为传统的特定字节序适配方法向标准网络字节序适配方法的转变提供了平稳、方便的过渡办法。
Description
技术领域
本发明涉及一种数字数据处理方法,尤其涉及一种网络通信中不同字节序类型之间的适配方法。
背景技术
目前,有很多通讯系统在通讯消息中采用了缺省的本地字节序。当系统变得越来越大,各个不同的通信模块在不同的操作平台下运行,比如WINDOWS PC和IBM AIX,就会导致这些模块之间所采用的字节序不同,比如有的采用低位字节在前、高位字节在后的LittleEndian字节序类型,而有的采用高位字节在前、低位字节在后的BigEndian字节序类型,等等。因此在网络通信时可能无法正确的理解对方发过来的消息。
传统的做法是,在程序代码中每一处需要进行网络通信的地方,分别对需要发送到各个不同模块的消息进行特定字节序的编码,以转换成相应的字节序。这种做法导致工作量非常大,且进行字节序转换的代码分布在程序中的多个地方,产生代码冗余。且代码适应性不强,当需要改变自身以及通信对端模块所在的操作系统和硬件平台时,需要重新修改各处的代码,出一套对应的版本。
为此,国际上提出了解决这一问题的标准做法:在通信时,通信的双方都采用标准网络字节序。这样,所有的通信系统在发送消息时把本地字节序转换成标准网络字节序、在接收消息时把标准网络字节序转换成本地字节序,就不会存在由于字节序不同而导致的理解障碍。
但是,由于大量已有的系统已经采用了传统的编码方法,其在网络中传送的并不是标准网络字节序。所以,当采用标准网络字节序的新系统通信与传统系统通信时就存在兼容性问题,也就需要对已有传统系统做大量的软件代码的修改升级。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种便于使用和维护、能灵活适应各种通信平台环境及其变化要求的、不同字节序类型之间的适配方法。
本发明的目的是通过以下技术方案实现的:
本发明提供了一种网络通信中不同字节序类型之间的适配方法,包括如下步骤:
A、根据配置文件设置适配前后的平台字节序类型信息;
B、获取需要适配的数据;
C、由处理模块根据需要适配数据的数据类型和适配前后的平台字节序类型信息,进行字节序转换;
D、提供适配后的数据。
其中,所述步骤A中的配置文件中可以包含有通信主体与所用平台的字节序类型之间的对应关系。
另外,所述步骤A中的配置文件中还可以包含有字节序类型与其字节存储顺序特征之间的对应关系。
所述步骤C中的处理模块为所有的基本数据类型定制了依据平台字节序类型信息根据需要进行字节序转换的专用过程。
其中,所述步骤C中字节序转换的具体操作可以通过字节数组中元素位置的调换来实现的。
所述步骤C中的处理模块是用面向对象语言编写的一个类,所述的专用过程是类的成员函数。
其中,所述步骤A中对适配前后的平台字节序类型信息的设置可以用所述类的构造函数来实现的。
所述步骤A中把适配后的平台字节序类型信息设置为本地平台的字节序类型信息。
或者,所述步骤A中把适配前的平台字节序类型信息设置为本地平台的字节序类型信息。
此外,所述步骤C中的处理模块还可以是用面向过程语言编写的一个有适配前后的字节序类型信息、适配数据、适配数据的数据类型信息作参数的过程,所述的专用过程是有适配前后的字节序类型信息、适配数据作参数的子过程。
由上述本发明提供的技术方案可以看出,本发明由于对平台字节序类型信息的来源采用了配置的方式,这样,当平台字节序类型信息不同或者发生变化时,只需要修改相应的配置就可以,而不需要多个版本的类似代码或者修改程序代码本身,就能够灵活地适应各种具有不同字节序类型的平台环境及其字节序类型的变化,便于使用和维护。
其中,通过为不同通信主体设定其所用平台的字节序类型,可以适应由于平台不同而引起的字节序类型不同;也可以适应由于平台变化而引起的字节序类型变化,不论这种变化是对方通信主体的变化,还是本方通信主体的变化,或者它们同时变化;只要这种字节序类型是事先可以定义或者被穷尽的。
而通过字节序类型与其字节存储顺序特征之间的对应关系,本发明还可以自己定义一种新的字节序类型,从而使得本发明可以适应更加复杂、陌生的环境,即便遇上一种全新的、事先没有被定义和穷尽的字节序类型,也只要修改配置文件即可,而不必修改程序代码本身。
而通过为所有的基本数据类型定制了依据平台字节序类型信息根据需要进行字节序转换的专用过程,本发明就为各种数据的字节序类型转换提供了完整、统一的接口,更加便于使用和维护。
同样,不论是与所用平台是采用特定字节序适配方法的对方通信主体通信,还是与采用标准网络字节序的对方通信主体通信,采用本发明时都可以根据对方通信主体所用平台的要求设置相应的字节序类型。这样,本发明的适配方法就兼容标准网络字节序适配方法和传统的特定字节序适配方法,从而为传统的特定字节序适配方法向标准网络字节序适配方法的转变提供了平稳、方便、灵活的过渡办法。
附图说明
图1是本发明应用环境的示意图;
图2是本发明的基本处理流程。
具体实施方式
本发明的核心思想是通过把适配前后的字节序类型信息采用配置的方式,并在适配处理中根据适配前后的字节序类型信息和所适配数据的数据类型进行字节序转换,而不是进行特定字节序类型转换编码的方式,来提高字节序适配方法的灵活性。
下面结合附图对发明作进一步的说明。
这样,如图1所示,本发明的应用环境中主要涉及四个实体:字节序类型信息配置文件14、处理模块13、需要适配的数据11和适配后的数据12。其中字节序类型信息配置文件14是本发明的应用中新增的内容,它在现有的特定字节序编码适配方法中是没有的;而处理模块13用于根据数据类型和适配前后的平台字节序类型信息,进行数据的字节序转换。
这四个实体间的相互关系是根据处理流程联系起来的。本发明的基本处理流程可以为四个步骤,如图2所示,依次是:
步骤21:根据配置文件14设置适配前后的平台字节序类型信息;
配置文件14包含有通信主体与所用平台的字节序类型之间的对应关系。这种对应关系如表1所示。
表1、通信主体与所在平台的字节序类型的对应关系
通信主体 | 所在平台的字节序类型 |
主体平台1 | 类型1 |
主体平台2 | 类型2 |
…… |
通过为不同通信主体设定其所用平台的字节序类型,不需要多个版本的类似代码或者修改程序代码本身,就可以适应由于平台不同而引起的字节序类型不同;也可以适应由于平台变化而引起的字节序类型变化,不论这种变化是对方通信主体的变化,还是本方通信主体的变化,或者它们同时变化;只要这种字节序类型是事先可以定义或者被穷尽的。
配置文件14中还可以包含有字节序类型与其字节存储顺序特征之间的对应关系。一种字节序类型的字节存储顺序特征是通过这种字节序类型下所有基本数据类型的存储结构顺序来表示的,特别是用那些受字节序类型影响的、多字节的基本数据类型的存储结构顺序来表示的。这种对应关系如表2所示。
表2、字节序类型与字节存储顺序特征的对应关系
字节序类型 | 双字节整数 | 四字节整数 | …… |
类型1(BigEndian) | 21 | 4321 | |
类型2(LittleEndian) | 12 | 1234 | |
…… |
这种字节序类型与字节存储顺序特征的对应关系其实就是对字节序类型的定义。通过这种对应关系,在字节序转换过程中,就可以根据适配前后字节序类型对应的具体存储顺序特征来进行处理。这样,即使出现一种全新的字节序类型,也只需要在配置文件中增加此新的字节序类型及其对应的字节存储顺序特征即可,而不必修改软件代码;这就极大地拓展了本发明对于不同平台环境、特别是未知的新字节序类型平台环境的适应能力。
步骤21中适配前后的平台字节序类型信息的设置通常是在使用适配方法时通过参数的形式传递给处理模块13的。当处理模块13是用面向对象的类时,可以用类的构造函数来进行适配前后的平台字节序类型信息的设置。这样,在类实例化时就把适配前后的适配前后的平台字节序类型信息设置好,可以进一步简化和方便适配方法的使用。
当把适配后的平台字节序类型信息设置为本地平台的字节序类型信息时,处理模块13就可以用于读取网络通信中的数据。这时,应当把适配前的平台字节序类型信息设置为对方通信主体所用平台的字节序类型信息。
当把适配前的平台字节序类型信息设置为本地平台的字节序类型信息时,处理模块13就可以用于向网络中发出通信数据。这时,就应当把适配后的平台字节序类型信息设置为对方通信主体所用平台的字节序类型信息。
当适配前后的字节序类型信息就都不设置成本地平台的字节序类型,处理模块13就可以成为一个中继或者网关完成字节序类型的适配,但并不关心通信数据的具体内容。
步骤22、获取需要适配的数据11;
步骤23、由处理模块13根据需要适配数据的数据类型和适配前后的平台字节序类型信息,进行字节序转换;
字节序转换的具体操作可以通过字节数组中元素位置的调换来实现的,也可以用其它实现字节移位的方法来实现。
处理模块13可以为所有的基本数据类型定制了依据平台字节序类型信息根据需要进行字节序转换的专用过程。比如,当处理模块13是用面向对象语言编写的一个类时,所述的专用过程就是类的成员函数。而当处理模块13用面向过程语言编写时,处理模块13就是一个有适配前后的字节序类型信息、适配数据、适配数据的数据类型标识作参数的过程,同时所述的专用过程是有适配前后的字节序类型信息、适配数据作参数的子过程。这样,通过为所有的基本数据类型定制了依据平台字节序类型信息根据需要进行字节序转换的专用过程,本发明就为各种数据的字节序类型转换提供了完整、统一的接口,更加便于使用和维护。
步骤24、提供适配后的数据12。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。总之,本发明的保护范围应该以权利要求所能涵盖的最大保护范围为准。
Claims (8)
1.一种网络通信中不同字节序类型之间的适配方法,其特征在于,包括如下步骤:
A、根据配置文件设置适配前后的平台字节序类型信息,所述配置文件中包含有通信主体与所用平台的字节序类型之间的对应关系,以及字节序类型与其字节存储顺序特征之间的对应关系;
B、获取需要适配的数据;
C、由处理模块根据需要适配数据的数据类型和适配前后的平台字节序类型信息,进行字节序转换;
D、提供适配后的数据。
2.根据权利要求1所述的网络通信中不同字节序类型之间的适配方法,其特征在于,所述步骤C中的处理模块为所有的基本数据类型定制了依据平台字节序类型信息根据需要进行字节序转换的专用过程。
3.根据权利要求2所述的网络通信中不同字节序类型之间的适配方法,其特征在于,所述步骤C中字节序转换的具体操作是通过字节数组中元素位置的调换来实现的。
4.根据权利要求2所述的网络通信中不同字节序类型之间的适配方法,其特征在于,所述步骤C中的处理模块是用面向对象语言编写的一个类,所述的专用过程是类的成员函数。
5.根据权利要求4所述的网络通信中不同字节序类型之间的适配方法,其特征在于,所述步骤A中对适配前后的平台字节序类型信息的设置是用所述类的构造函数来实现的。
6.根据权利要求5所述的网络通信中不同字节序类型之间的适配方法,其特征在于,所述步骤A中把适配后的平台字节序类型信息设置为本地平台的字节序类型信息。
7.根据权利要求5所述的网络通信中不同字节序类型之间的适配方法,其特征在于,所述步骤A中把适配前的平台字节序类型信息设置为本地平台的字节序类型信息。
8.根据权利要求2所述的网络通信中不同字节序类型之间的适配方法,其特征在于,所述步骤C中的处理模块是用面向过程语言编写的一个有适配前后的字节序类型信息、适配数据、适配数据的数据类型信息作参数的过程,所述的专用过程是有适配前后的字节序类型信息、适配数据作参数的子过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005100567342A CN1838665B (zh) | 2005-03-24 | 2005-03-24 | 网络通信中不同字节序类型之间的适配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005100567342A CN1838665B (zh) | 2005-03-24 | 2005-03-24 | 网络通信中不同字节序类型之间的适配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1838665A CN1838665A (zh) | 2006-09-27 |
CN1838665B true CN1838665B (zh) | 2010-08-11 |
Family
ID=37015920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100567342A Expired - Fee Related CN1838665B (zh) | 2005-03-24 | 2005-03-24 | 网络通信中不同字节序类型之间的适配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1838665B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014082225A1 (zh) * | 2012-11-28 | 2014-06-05 | 华为技术有限公司 | 消息处理方法及网络设备 |
CN103034499B (zh) * | 2012-12-13 | 2016-02-17 | 中国航空无线电电子研究所 | 机载设备网络数据传输通用的数据格式转换方法 |
CN103532959A (zh) * | 2013-10-21 | 2014-01-22 | 济南政和科技有限公司 | 一种跨平台网络通信方法 |
CN111124288B (zh) * | 2019-12-06 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种vpd存储管理方法、装置、设备及可读存储介质 |
CN111965993A (zh) * | 2020-05-11 | 2020-11-20 | 中核武汉核电运行技术股份有限公司 | 一种rinsim平台与数字化仪控系统的交互方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1532722A (zh) * | 2003-03-19 | 2004-09-29 | ���µ�����ҵ��ʽ���� | 字节序不同的处理器间共享数据的数据共享装置和处理器 |
-
2005
- 2005-03-24 CN CN2005100567342A patent/CN1838665B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1532722A (zh) * | 2003-03-19 | 2004-09-29 | ���µ�����ҵ��ʽ���� | 字节序不同的处理器间共享数据的数据共享装置和处理器 |
Non-Patent Citations (3)
Title |
---|
JP特开2004-355432A 2004.12.16 |
JP特开平10-327210A 1998.12.08 |
JP特开平11-328049A 1999.11.30 |
Also Published As
Publication number | Publication date |
---|---|
CN1838665A (zh) | 2006-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943950B (zh) | 一种区块链中数据智能合约生成的方法及系统 | |
CN1838665B (zh) | 网络通信中不同字节序类型之间的适配方法 | |
CN101246486A (zh) | 用于改进的表达式处理的方法和装置 | |
CN101515929B (zh) | 消息格式转换方法和网络设备及代理装置 | |
CN111061678B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN101553779B (zh) | 将主机系统应用程序转换为开放系统应用程序的转换装置和方法 | |
CN110113196A (zh) | 一种协议配置方法、装置、设备及介质 | |
CN105337968A (zh) | 一种跨平台通讯协议代码的转换方法及其系统 | |
CN111176791A (zh) | 一种基于多虚拟机区块链平台跨虚拟机调用方法 | |
CN102541926B (zh) | 一种数据交换处理方法、设备和系统 | |
CN106648817B (zh) | 一种跨平台的数据对象传输方法 | |
CN109154926A (zh) | 用于实现跨异构机器架构的数据兼容性的系统和方法 | |
CN105677348A (zh) | 一种boot程序的存储方法及装置、启动方法及装置 | |
US7506068B2 (en) | Method, apparatus and system for transforming, converting and processing messages between multiple systems | |
CN101335763B (zh) | 智能网系统中数据导出及数据传输的方法 | |
CN102377738A (zh) | 流程整合服务器及利用其实现系统整合的方法 | |
US20070130184A1 (en) | Adaptive data dictionary language, extendable for a security system | |
CN103646015A (zh) | 发送、接收以及传输xml报文的方法和系统 | |
CN116634036A (zh) | 一种航电数据接口装置的协议转换配置方法及系统 | |
CN101149669A (zh) | 文字编码转换的方法 | |
CN100423492C (zh) | 一种管理信息库的处理方法 | |
US20050216896A1 (en) | Data communication via tanslation map exchange | |
CN108959214A (zh) | 备课课件生成方法及系统 | |
CN100390783C (zh) | 进行格变换的方法和系统 | |
CN109474582B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100811 Termination date: 20170324 |