CN105005496B - 一种跨语言转换网络数据包定义文件的处理***及方法 - Google Patents
一种跨语言转换网络数据包定义文件的处理***及方法 Download PDFInfo
- Publication number
- CN105005496B CN105005496B CN201510359949.5A CN201510359949A CN105005496B CN 105005496 B CN105005496 B CN 105005496B CN 201510359949 A CN201510359949 A CN 201510359949A CN 105005496 B CN105005496 B CN 105005496B
- Authority
- CN
- China
- Prior art keywords
- code analysis
- network data
- data package
- code
- different types
- 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
Links
Landscapes
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种跨语言转换网络数据包定义文件的处理***,包括将网络数据包定义文件解析生成各个不同类型的分析代码的解析模块、获取分析代码中的定义参数的获取模块和字符串格式化进行代码转换生成目标语言的定义文件的语言转换模块;本发明还涉及一种跨语言转换网络数据包定义文件的处理方法;本发明针对结构体网络数据包定义文件需用人力手工转换为目标语言的定义文件的问题,提供了一种可自动化地完成这一转换过程的处理***,以供目标语言与旧有的网络数据包结构体(基于C/C++的网络数据包定义文件)进行转换,该处理***速度快,转换准确,不需人工参与,节省了开发人员的时间,降低了此类互联网软件客户端的开发成本,提高了开发效率。
Description
技术领域
本发明涉及计算机编程语言以及计算机网络通讯领域,尤其涉及一种跨语言转换网络数据包定义文件的处理***及方法。
背景技术
目前计算机软件业界已有多种跨计算机编程语言、跨平台的网络通讯协议,但仍有不少运营中的旧有计算机服务器软件,在使用传统的直接通过网络传输C/C++结构体内存数据的方法。这种方法速度快、效率高,在相同平台、相同编译配置所生成的C/C++程序间使用起来非常方便,因此在PC游戏盛行的时期曾被大量使用。
目前,我国已经进入了移动互联网时代,大量移动互联网游戏软件客户端已不再直接使用C/C++来进行游戏业务的编写,而是使用起了更方便、更易用的脚本语言,如Lua语言、JavaScript语言等。但旧有的服务器软件仍在线上运营中,新的移动互联网软件客户端需要与这些旧有的服务器软件相通讯;这些旧有的服务器软件使用直接传输C/C++结构体内存数据的通讯方法,通过C/C++结构体来描述网络数据包的定义,而其它编程语言无法直接使用这些结构体定义。要在新的移动互联网软件客户端的Lua、JavaScript等脚本语言中收发C/C++结构体内存数据网络包,就需要将C/C++结构体及其在特定结构成员对齐方式下各成员变量的内存偏移量、长度等数据转换为相应的脚本语言定义,以供脚本语言使用。而这一转换过程此前是由人力手工完成的,不仅耗时耗力,而且容易出错。
发明内容
本发明所要解决的技术问题是提供一种跨语言转换网络数据包定义文件的处理***及方法,针对结构体网络数据包定义文件需用人力手工转换为目标语言的定义文件的问题,提供了一种可自动化地完成这一转换过程的处理***及方法。
本发明解决上述技术问题的技术方案如下:一种跨语言转换网络数据包定义文件的处理***,包括解析模块、获取模块和语言转换模块,
所述解析模块,用于将网络数据包定义文件解析生成各个不同类型的分析代码;
所述获取模块,用于对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数;
所述语言转换模块,用于将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文件。
字符串格式化是指把字符串(即文本)、数字(整数、浮点数等)等元素,按照一定的格式(即整数输出、取N位小数输出、十六进制输出等格式),组合成一个完整的代码转换格式,使***处理数据的时候运行速度快速。
本发明的有益效果是:针对结构体网络数据包定义文件需用人力手工转换为目标语言的定义文件的问题,提供了一种可自动化地完成这一转换过程的处理***,以供目标语言与旧有的网络数据包结构体(基于C/C++的网络数据包定义文件)进行转换,该处理***速度快,转换准确,不需人工参与,节省了开发人员的时间,降低了此类互联网软件客户端的开发成本,提高了开发效率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。
进一步,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码。
进一步,所述获取模块对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括各成员变量的名称、类型、值和长度。。
进一步,所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。
采用上述进一步方案的有益效果是:获取了相应的名称、类型、值、偏移量等信息之后,马上就通过字符串格式代码转换为目标语言的定义,这样可以不必再写这些信息的存储代码,处理速度快且效率高。
本发明解决上述技术问题的另一技术方案如下:一种跨语言转换网络数据包定义文件的处理方法,包括如下步骤:
步骤S1:将网络数据包定义文件解析生成各个不同类型的分析代码;
步骤S2:对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数;
步骤S3:将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文件。
字符串格式化是指把字符串(即文本)、数字(整数、浮点数等)等元素,按照一定的格式(即整数输出、取N位小数输出、十六进制输出等格式),组合成一个完整的代码转换格式,使***处理数据的时候运行速度快速。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。
进一步,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码。
进一步,步骤S2中,对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数包括各成员变量的名称、类型、值和长度。
进一步,所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。
采用上述进一步方案的有益效果是:获取了相应的名称、类型、值、偏移量等信息之后,马上就通过字符串格式代码转换为目标语言的定义,这样可以不必再写这些信息的存储代码,处理速度快且效率高。
本发明针对结构体网络数据包定义文件需用人力手工转换为目标语言的定义文件的问题,提供了一种可自动化地完成这一转换过程的处理方法,以供目标语言与旧有的网络数据包结构体(如基于C/C++的网络数据包定义文件)进行转换,该处理方法速度快,转换准确,不需人工参与,节省了开发人员的时间,降低了此类互联网软件客户端的开发成本,提高了开发效率。
附图说明
图1为本发明跨语言转换网络数据包定义文件的处理***的模块框图;
图2为本发明跨语言转换网络数据包定义文件的处理方法的方法流程图。
附图中,各标记所代表的部件名称如下:
1、解析模块,2、获取模块3、语言转换模块。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,一种跨语言转换网络数据包定义文件的处理***,包括解析模块1、获取模块2和语言转换模块3,
所述解析模块1,用于将网络数据包定义文件解析生成各个不同类型的分析代码;
所述获取模块2,用于对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数;
所述语言转换模块3,用于将获取的定义参数字符串格式化进行代码转换,生成目标语言的定义文件。
所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。
所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码。
所述获取模块对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括各成员变量的名称、类型、值和长度。
所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。
如图2所示,一种跨语言转换网络数据包定义文件的处理方法,包括如下步骤:
步骤S1:将网络数据包定义文件解析生成各个不同类型的分析代码;
步骤S2:对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数;
步骤S3:将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文件。
字符串格式化是指把字符串(即文本)、数字(整数、浮点数等)等元素,按照一定的格式(即整数输出、取N位小数输出、十六进制输出等格式),组合成一个完整的代码转换格式,使***处理数据的时候运行速度快速。
步骤S2中,对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数包括各成员变量的名称、类型、值和长度。
所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。
所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。
所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码。
具体实施例:
以基于C/C++的网络数据包定义文件转换为Lua语言的定义文件为例,
步骤1:将C/C++的网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容,将其对应解析生成宏定义分析代码、枚举类型分析代码和结构体分析代码;
对于简单的数值与字符串类型的宏定义内容,对应转换为宏定义分析代码,如表1所示:
表1
原始定义 | 分析代码 |
#define MDM_CHAT_USER 1 | EXPORT_DEFINE(MDM_CHAT_USER); |
对于枚举类型定义内容,对应转换为枚举类型分析代码,如表2所示:
表2
对于结构体定义内容,对应转换为结构体分析代码,如表3所示:
表3
步骤2:对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数;
对于简单的数值与字符串类型的宏定义分析代码,使用typeid()来获取分析代码中所对应的类型,如表4所示:
表4
分析代码 | 所得的定义参数 |
EXPORT_DEFINE(MDM_CHAT_USER); | 定义:名称=MDM_CHAT_USER,类型=int,值=1 |
实现的部分代码如下:
对于枚举类型分析代码,通过sizeof()来获取分析代码中的获取其长度,如表5所示:
表5
对于结构体分析代码,通过sizeof()来获取分析代码中的长度,typeid()获取所对应的类型,还需要获取该成员变量相对于结构体起点的内存偏移量,具体实现是通过C++中的取址操作符“&”取地址并相减来实现的,并通过取地址相减法获取所述各成员变量的内存偏移量的数据,如表6所示:
表6
步骤3:将获取的定义参数通过“字符串格式化”代码进行转换成目标语言的定义文件;
对简单的数值与字符串类型的宏定义参数转换为Lua语言的定义文件,如表7所示:
表7
所得的定义数据 | Lua代码定义 |
定义:名称=MDM_CHAT_USER,类型=int,值=1 | MDM_CHAT_USER=1; |
具体可以使用C++中的of stream::operator<<来完成这一转换过程,实现的部分代码如下:
std::of stream&strm;//所需输出到的文件
std::string name;//名称
std::string type;//类型
std::string value;//值
if(type==”cstring”){
strm<<name<<“=\””<<value<<“\”;”;
}else{
strm<<name<<“=“<<value<<”\;”;
}
将枚举类型定义参数转换为Lua语言的定义文件,如表8所示:
表8
将结构体定义参数转换为Lua语言的定义文件,如表9所示:
表9
本处理方法和***速度快,转换准确,不需人工参与,节省了开发人员的时间,降低了此类互联网软件客户端的开发成本,提高了开发效率。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种跨语言转换网络数据包定义文件的处理***,其特征在于,包括解析模块(1)、获取模块(2)和语言转换模块(3),
所述解析模块(1),用于将网络数据包定义文件解析生成各个不同类型的分析代码;所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码;
所述获取模块(2),用于对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数:对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括各成员变量的名称、类型、值和长度,还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据;
所述语言转换模块(3),用于将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文件。
2.一种跨语言转换网络数据包定义文件的处理方法,其特征在于,包括如下步骤:
步骤S1:将网络数据包定义文件解析生成各个不同类型的分析代码;所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码;
步骤S2:对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数:对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括各成员变量的名称、类型、值和长度,还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据;
步骤S3:将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510359949.5A CN105005496B (zh) | 2015-06-25 | 2015-06-25 | 一种跨语言转换网络数据包定义文件的处理***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510359949.5A CN105005496B (zh) | 2015-06-25 | 2015-06-25 | 一种跨语言转换网络数据包定义文件的处理***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105005496A CN105005496A (zh) | 2015-10-28 |
CN105005496B true CN105005496B (zh) | 2018-05-08 |
Family
ID=54378176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510359949.5A Active CN105005496B (zh) | 2015-06-25 | 2015-06-25 | 一种跨语言转换网络数据包定义文件的处理***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105005496B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107172013B (zh) * | 2017-04-18 | 2020-08-04 | 北京思特奇信息技术股份有限公司 | 一种数据传输方法及*** |
CN109739512B (zh) * | 2018-12-28 | 2022-04-12 | 江苏极光网络技术有限公司 | 一种解析型语言文本式分析转换方法 |
CN113238491B (zh) * | 2021-04-12 | 2023-05-05 | 湖南三一智能控制设备有限公司 | 执行机构的仿真测试方法、装置、智能臂架及工程车辆 |
CN114741076B (zh) * | 2022-04-20 | 2024-05-31 | 重庆长安汽车股份有限公司 | 一种基于soa服务参数快速定义的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261579A (zh) * | 2007-03-08 | 2008-09-10 | 青牛(北京)技术有限公司 | 一种实现VBScript语言跨平台应用的方法 |
CN102141991A (zh) * | 2010-02-02 | 2011-08-03 | 钟巨航 | 用于web服务器的方法和*** |
CN102222004A (zh) * | 2011-07-01 | 2011-10-19 | 福建富士通信息软件有限公司 | 交换机专用语言转换为c语言的方法 |
CN103049300A (zh) * | 2012-12-17 | 2013-04-17 | 福建天晴数码有限公司 | C和c++代码在支持flash的web平台上运行的方法 |
CN103092980A (zh) * | 2013-01-31 | 2013-05-08 | 中国科学院自动化研究所 | 一种数据自动转换与存储的方法及*** |
CN104636174A (zh) * | 2015-02-02 | 2015-05-20 | 惠州Tcl移动通信有限公司 | 基于Android***的特征值定义和使用方法及*** |
-
2015
- 2015-06-25 CN CN201510359949.5A patent/CN105005496B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261579A (zh) * | 2007-03-08 | 2008-09-10 | 青牛(北京)技术有限公司 | 一种实现VBScript语言跨平台应用的方法 |
CN102141991A (zh) * | 2010-02-02 | 2011-08-03 | 钟巨航 | 用于web服务器的方法和*** |
CN102222004A (zh) * | 2011-07-01 | 2011-10-19 | 福建富士通信息软件有限公司 | 交换机专用语言转换为c语言的方法 |
CN103049300A (zh) * | 2012-12-17 | 2013-04-17 | 福建天晴数码有限公司 | C和c++代码在支持flash的web平台上运行的方法 |
CN103092980A (zh) * | 2013-01-31 | 2013-05-08 | 中国科学院自动化研究所 | 一种数据自动转换与存储的方法及*** |
CN104636174A (zh) * | 2015-02-02 | 2015-05-20 | 惠州Tcl移动通信有限公司 | 基于Android***的特征值定义和使用方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN105005496A (zh) | 2015-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105005496B (zh) | 一种跨语言转换网络数据包定义文件的处理***及方法 | |
US20210303588A1 (en) | Dynamic Field Data Translation to Support High Performance Stream Data Processing | |
CN101841515B (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
CN106970820A (zh) | 代码存储方法及代码存储装置 | |
US8898651B2 (en) | Automatic generation of instruction-set documentation | |
CN104717179B (zh) | 一种通信业务的处理方法及装置 | |
CN110347708A (zh) | 一种数据处理方法以及相关设备 | |
CN104486396B (zh) | 一种跨平台的网络数据的传输方法 | |
CN106713357A (zh) | 一种通用的网络协议解析方法 | |
CN113778449B (zh) | 航空电子接口数据适配转换*** | |
CN109460220A (zh) | 报文预定义代码生成方法、装置、电子设备和存储介质 | |
CN107357785A (zh) | 主题特征词抽取方法及***、情感极性判断方法及*** | |
CN112052010A (zh) | 一种icd字节序自动转换方法 | |
CN109242253A (zh) | 物料清单提取方法、装置以及存储介质 | |
CN108055167B (zh) | 一种面向应用的接口通信协议建模方法及装置 | |
CN103780624A (zh) | 一种面向复杂***的通用应用层网络通信协议应用方法 | |
CN101201833A (zh) | Pdf文档数据填充***及方法 | |
CN106230889A (zh) | 移动应用业务组件资源管理方法及*** | |
CN105793842B (zh) | 序列化消息之间的转换方法和装置 | |
CN105786529B (zh) | 一种类托管代码调用c/c++风格函数的复杂结构的参数设计方法 | |
CN110008446A (zh) | 一种基于编程语言对表格文件进行转化的方法和电子设备 | |
Mezzina et al. | Reversible sessions using monitors | |
CN109960590A (zh) | 一种优化嵌入式***诊断打印的方法 | |
CN109359055A (zh) | 一种数据测试的方法和设备 | |
CN103605496A (zh) | 一种实现快速解析基于scpi协议的通信指令的方法 |
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 | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 541000 Xifeng Road, Xiufeng District, Guilin, the Guangxi Zhuang Autonomous Region, 2 Patentee after: Guilin harbour network Polytron Technologies Inc Address before: 541000 Xifeng Road, Xiufeng District, Guilin, the Guangxi Zhuang Autonomous Region, 2 Patentee before: Guilin Li Gang network technology company limited |