CN105005496A - 一种跨语言转换网络数据包定义文件的处理***及方法 - Google Patents

一种跨语言转换网络数据包定义文件的处理***及方法 Download PDF

Info

Publication number
CN105005496A
CN105005496A CN201510359949.5A CN201510359949A CN105005496A CN 105005496 A CN105005496 A CN 105005496A CN 201510359949 A CN201510359949 A CN 201510359949A CN 105005496 A CN105005496 A CN 105005496A
Authority
CN
China
Prior art keywords
network data
code analysis
definition file
data package
file
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.)
Granted
Application number
CN201510359949.5A
Other languages
English (en)
Other versions
CN105005496B (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.)
Guilin harbour network Polytron Technologies Inc
Original Assignee
Guilin Li Gang Network Technology 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 Guilin Li Gang Network Technology Co Ltd filed Critical Guilin Li Gang Network Technology Co Ltd
Priority to CN201510359949.5A priority Critical patent/CN105005496B/zh
Publication of CN105005496A publication Critical patent/CN105005496A/zh
Application granted granted Critical
Publication of CN105005496B publication Critical patent/CN105005496B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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 (10)

1.一种跨语言转换网络数据包定义文件的处理***,其特征在于,包括解析模块(1)、获取模块(2)和语言转换模块(3),
所述解析模块(1),用于将网络数据包定义文件解析生成各个不同类型的分析代码;
所述获取模块(2),用于对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数;
所述语言转换模块(3),用于将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文件。
2.根据权利要求1所述的跨语言转换网络数据包定义文件的处理***,其特征在于,所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。
3.根据权利要求1所述的跨语言转换网络数据包定义文件的处理***,其特征在于,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码。
4.根据权利要求1所述的跨语言转换网络数据包定义文件的处理***,其特征在于,所述获取模块(2)对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括各成员变量的名称、类型、值和长度。
5.根据权利要求4所述的跨语言转换网络数据包定义文件的处理***,其特征在于,所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。
6.一种跨语言转换网络数据包定义文件的处理方法,其特征在于,包括如下步骤:
步骤S1:将网络数据包定义文件解析生成各个不同类型的分析代码;
步骤S2:对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文件来获取分析代码中的定义参数;
步骤S3:将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文件。
7.根据权利要求6所述的跨语言转换网络数据包定义文件的处理方法,其特征在于,所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。
8.根据权利要求6所述的跨语言转换网络数据包定义文件的处理方法,其特征在于,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代码。
9.根据权利要求6所述的跨语言转换网络数据包定义文件的处理方法,其特征在于,步骤S2中,对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括各成员变量的名称、类型、值和长度。
10.根据权利要求9所述的跨语言转换网络数据包定义文件的处理方法,其特征在于,所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。
CN201510359949.5A 2015-06-25 2015-06-25 一种跨语言转换网络数据包定义文件的处理***及方法 Active CN105005496B (zh)

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 true CN105005496A (zh) 2015-10-28
CN105005496B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107172013A (zh) * 2017-04-18 2017-09-15 北京思特奇信息技术股份有限公司 一种数据传输方法及***
CN109739512A (zh) * 2018-12-28 2019-05-10 江苏极光网络技术有限公司 一种解析型语言文本式分析转换方法
CN113238491A (zh) * 2021-04-12 2021-08-10 湖南三一智能控制设备有限公司 执行机构的仿真测试方法、装置、智能臂架及工程车辆
CN114741076A (zh) * 2022-04-20 2022-07-12 重庆长安汽车股份有限公司 一种基于soa服务参数快速定义的方法

Citations (6)

* Cited by examiner, † Cited by third party
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***的特征值定义和使用方法及***

Patent Citations (6)

* Cited by examiner, † Cited by third party
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***的特征值定义和使用方法及***

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107172013A (zh) * 2017-04-18 2017-09-15 北京思特奇信息技术股份有限公司 一种数据传输方法及***
CN107172013B (zh) * 2017-04-18 2020-08-04 北京思特奇信息技术股份有限公司 一种数据传输方法及***
CN109739512A (zh) * 2018-12-28 2019-05-10 江苏极光网络技术有限公司 一种解析型语言文本式分析转换方法
CN113238491A (zh) * 2021-04-12 2021-08-10 湖南三一智能控制设备有限公司 执行机构的仿真测试方法、装置、智能臂架及工程车辆
CN114741076A (zh) * 2022-04-20 2022-07-12 重庆长安汽车股份有限公司 一种基于soa服务参数快速定义的方法
CN114741076B (zh) * 2022-04-20 2024-05-31 重庆长安汽车股份有限公司 一种基于soa服务参数快速定义的方法

Also Published As

Publication number Publication date
CN105005496B (zh) 2018-05-08

Similar Documents

Publication Publication Date Title
CN109460219B (zh) 快速序列化接口控制文件的方法
CN105005496A (zh) 一种跨语言转换网络数据包定义文件的处理***及方法
CN101841515B (zh) 可变目标的协议数据单元编解码代码自动生成的实现方法
CN101788992A (zh) 一种数据库查询语句的转换方法和转换***
US8806452B2 (en) Transformation of computer programs and eliminating errors
CN115293751B (zh) 一种轨道交通bim模型数据的处理方法、***及设备
CN106970820A (zh) 代码存储方法及代码存储装置
CN113778449B (zh) 航空电子接口数据适配转换***
CN106713357A (zh) 一种通用的网络协议解析方法
CN111970353A (zh) 云计算平台物联网中异构设备的数据处理方法及装置
CN105072130A (zh) 一种asn.1解码器代码自动生成方法
CN106055450A (zh) 一种二进制日志解析方法及装置
CN101201833A (zh) Pdf文档数据填充***及方法
CN103780624A (zh) 一种面向复杂***的通用应用层网络通信协议应用方法
TW201737241A (zh) 語言識別方法、裝置及系統
CN112882844A (zh) 基于网络前后端的联调方法、装置及存储介质
CN116227505A (zh) 一种国际化文件翻译方法、装置、设备及介质
CN102270223B (zh) 消息解码库的生成方法、装置及消息解码方法、装置
CN108153896B (zh) 针对输入数据、输出数据的处理方法及装置
CN113887182A (zh) 表格生成方法、装置、设备及存储介质
CN101261643A (zh) 网站页面信息统计方法及装置
CN102937910B (zh) 控制算法跨平台转换***及方法
CN112199626A (zh) 基于dsl布局引擎的动态表单生成方法
CN105793842B (zh) 序列化消息之间的转换方法和装置
CN116775599A (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
GR01 Patent grant
GR01 Patent grant
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

CP01 Change in the name or title of a patent holder