一种跨语言转换网络数据包定义文件的处理系统及方法_2

文档序号:9288342阅读:来源:国知局
目标语言的定 义文件。
[0046] 字符串格式化是指把字符串(即文本)、数字(整数、浮点数等)等元素,按照一定 的格式(即整数输出、取N位小数输出、十六进制输出等格式),组合成一个完整的代码转换 格式,使系统处理数据的时候运行速度快速。
[0047] 步骤S2中,对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生 成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数包括各成员变量的 名称、类型、值和长度。
[0048] 所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数 据。
[0049] 所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内 容。
[0050] 所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体 分析代码。
[0051] 具体实施例:
[0052] 以基于C/C++的网络数据包定义文件转换为Lua语言的定义文件为例,
[0053] 步骤1:将C/C++的网络数据包定义文件包括宏定义内容、枚举类型定义内容和 结构体定义内容,将其对应解析生成宏定义分析代码、枚举类型分析代码和结构体分析代 码;
[0054] 对于简单的数值与字符串类型的宏定义内容,对应转换为宏定义分析代码,如表1 所示:
[0055]表1
[0056]
[0057] 于枚举类型定义内容,对应转换^枚举类型分析代码,如表2所示:^
[0058]表2
[0059]
[0060] 对于结构体定义内容,对应转换为结构体分析代码,如表3所示:
[0061]表3
[0062]
[0063] 步骤2 :对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执 行文件来获取分析代码中的定义参数;
[0064] 对于简单的数值与字符串类型的宏定义分析代码,使用typeidO来获取分析代 码中所对应的类型,如表4所示:
[0065] 表4
[0066]
[0067] 实现的部分代码如下:
[0068]
[0069] 对于枚举类型分析代码,通过sizeofO来获取分析代码中的获取其长度,如表5 所示:
[0070] 表 5
[0071]
[0072] 对于结构体分析代码,通过sizeofO来获取分析代码中的长度,typeidO获取所 对应的类型,还需要获取该成员变量相对于结构体起点的内存偏移量,具体实现是通过C++ 中的取址操作符"&"取地址并相减来实现的,并通过取地址相减法获取所述各成员变量的 内存偏移量的数据,如表6所示:
[0073] 表 6
[0074]
[0075] 步骤3 :将获取的定义参数通过"字符串格式化"代码进行转换成目标语言的定义 文件;
[0076] 对简单的数值与字符串类型的宏定义参数转换为Lua语言的定义文件,如表7所 示:
[0077]表7
[0078]
[0079] 具体可以使用C++中的of stream: :operator〈〈来完成这一转换过程,实现的部 分代码如下:
[0080] std: :of stream&strm;//所需输出到的文件
[0081] std::string name;// 名称
[0082] std::string type;// 类型
[0083] std::string value;// 值
[0084] if (type = = " cstring"){
[0085] strm〈〈name〈〈 <〈value〈〈"\";',;
[0086] } else {
[0087] strm〈〈name〈〈"= "<〈value〈〈" \ ;',;
[0088] }
[0089] 将枚举类型定义参数转换为Lua语言的定义文件,如表8所示:
[0090]表 8
[0091]
[0092] 将结构体定义参数转换为Lua语言的定义文件,如表9所示:
[0093]表9
[0094]
[0095] 本处理方法和系统速度快,转换准确,不需人工参与,节省了开发人员的时间,降 低了此类互联网软件客户端的开发成本,提高了开发效率。
[0096] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1. 一种跨语言转换网络数据包定义文件的处理系统,其特征在于,包括解析模块(I)、 获取模块(2)和语言转换模块(3), 所述解析模块(1),用于将网络数据包定义文件解析生成各个不同类型的分析代码; 所述获取模块(2),用于对各个不同类型的分析代码进行编译生成可执行文件,再执行 所述可执行文件来获取分析代码中的定义参数; 所述语言转换模块(3),用于将获取的定义参数通过字符串格式化进行代码转换,生成 目标语言的定义文件。2. 根据权利要求1所述的跨语言转换网络数据包定义文件的处理系统,其特征在于, 所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。3. 根据权利要求1所述的跨语言转换网络数据包定义文件的处理系统,其特征在于, 所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代 码。4. 根据权利要求1所述的跨语言转换网络数据包定义文件的处理系统,其特征在于, 所述获取模块(2)对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成 可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括 各成员变量的名称、类型、值和长度。5. 根据权利要求4所述的跨语言转换网络数据包定义文件的处理系统,其特征在于, 所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。6. -种跨语言转换网络数据包定义文件的处理方法,其特征在于,包括如下步骤: 步骤Sl :将网络数据包定义文件解析生成各个不同类型的分析代码; 步骤S2 :对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执行文 件来获取分析代码中的定义参数; 步骤S3 :将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定义文 件。7. 根据权利要求6所述的跨语言转换网络数据包定义文件的处理方法,其特征在于, 所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内容。8. 根据权利要求6所述的跨语言转换网络数据包定义文件的处理方法,其特征在于, 所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体分析代 码。9. 根据权利要求6所述的跨语言转换网络数据包定义文件的处理方法,其特征在于, 步骤S2中,对各个不同类型的分析代码通过操作符typeid和sizeof进行编译生成可执行 文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数包括各成员 变量的名称、类型、值和长度。10. 根据权利要求9所述的跨语言转换网络数据包定义文件的处理方法,其特征在于, 所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数据。
【专利摘要】本发明涉及一种跨语言转换网络数据包定义文件的处理系统,包括将网络数据包定义文件解析生成各个不同类型的分析代码的解析模块、获取分析代码中的定义参数的获取模块和字符串格式化进行代码转换生成目标语言的定义文件的语言转换模块;本发明还涉及一种跨语言转换网络数据包定义文件的处理方法;本发明针对结构体网络数据包定义文件需用人力手工转换为目标语言的定义文件的问题,提供了一种可自动化地完成这一转换过程的处理系统,以供目标语言与旧有的网络数据包结构体(基于C/C++的网络数据包定义文件)进行转换,该处理系统速度快,转换准确,不需人工参与,节省了开发人员的时间,降低了此类互联网软件客户端的开发成本,提高了开发效率。
【IPC分类】G06F9/45
【公开号】CN105005496
【申请号】CN201510359949
【发明人】杨潇, 黄剑, 李炽安, 钟柱亮, 赖昌灏
【申请人】桂林力港网络科技有限公司
【公开日】2015年10月28日
【申请日】2015年6月25日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1