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

文档序号:9288342阅读:305来源:国知局
一种跨语言转换网络数据包定义文件的处理系统及方法
【技术领域】
[0001] 本发明涉及计算机编程语言以及计算机网络通讯领域,尤其涉及一种跨语言转换 网络数据包定义文件的处理系统及方法。
【背景技术】
[0002] 目前计算机软件业界已有多种跨计算机编程语言、跨平台的网络通讯协议,但仍 有不少运营中的旧有计算机服务器软件,在使用传统的直接通过网络传输C/C++结构体内 存数据的方法。这种方法速度快、效率高,在相同平台、相同编译配置所生成的C/C++程序 间使用起来非常方便,因此在PC游戏盛行的时期曾被大量使用。
[0003] 目前,我国已经进入了移动互联网时代,大量移动互联网游戏软件客户端已不再 直接使用C/C++来进行游戏业务的编写,而是使用起了更方便、更易用的脚本语言,如Lua 语言、JavaScript语言等。但旧有的服务器软件仍在线上运营中,新的移动互联网软件客 户端需要与这些旧有的服务器软件相通讯;这些旧有的服务器软件使用直接传输C/C++结 构体内存数据的通讯方法,通过C/C++结构体来描述网络数据包的定义,而其它编程语言 无法直接使用这些结构体定义。要在新的移动互联网软件客户端的Lua、JavaScript等脚 本语言中收发C/C++结构体内存数据网络包,就需要将C/C++结构体及其在特定结构成员 对齐方式下各成员变量的内存偏移量、长度等数据转换为相应的脚本语言定义,以供脚本 语言使用。而这一转换过程此前是由人力手工完成的,不仅耗时耗力,而且容易出错。

【发明内容】

[0004] 本发明所要解决的技术问题是提供一种跨语言转换网络数据包定义文件的处理 系统及方法,针对结构体网络数据包定义文件需用人力手工转换为目标语言的定义文件的 问题,提供了一种可自动化地完成这一转换过程的处理系统及方法。
[0005] 本发明解决上述技术问题的技术方案如下:一种跨语言转换网络数据包定义文件 的处理系统,包括解析模块、获取模块和语言转换模块,
[0006] 所述解析模块,用于将网络数据包定义文件解析生成各个不同类型的分析代码;
[0007] 所述获取模块,用于对各个不同类型的分析代码进行编译生成可执行文件,再执 行所述可执行文件来获取分析代码中的定义参数;
[0008] 所述语言转换模块,用于将获取的定义参数通过字符串格式化进行代码转换,生 成目标语言的定义文件。
[0009] 字符串格式化是指把字符串(即文本)、数字(整数、浮点数等)等元素,按照一定 的格式(即整数输出、取N位小数输出、十六进制输出等格式),组合成一个完整的代码转换 格式,使系统处理数据的时候运行速度快速。
[0010] 本发明的有益效果是:针对结构体网络数据包定义文件需用人力手工转换为目标 语言的定义文件的问题,提供了一种可自动化地完成这一转换过程的处理系统,以供目标 语言与旧有的网络数据包结构体(基于C/C++的网络数据包定义文件)进行转换,该处理 系统速度快,转换准确,不需人工参与,节省了开发人员的时间,降低了此类互联网软件客 户端的开发成本,提高了开发效率。
[0011] 在上述技术方案的基础上,本发明还可以做如下改进。
[0012] 进一步,所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体 定义内容。
[0013] 进一步,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码 和结构体分析代码。
[0014] 进一步,所述获取模块对各个不同类型的分析代码通过操作符typeid和sizeof 进行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述 定义参数包括各成员变量的名称、类型、值和长度。。
[0015] 进一步,所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移 量的数据。
[0016] 采用上述进一步方案的有益效果是:获取了相应的名称、类型、值、偏移量等信息 之后,马上就通过字符串格式代码转换为目标语言的定义,这样可以不必再写这些信息的 存储代码,处理速度快且效率高。
[0017] 本发明解决上述技术问题的另一技术方案如下:一种跨语言转换网络数据包定义 文件的处理方法,包括如下步骤:
[0018] 步骤S1 :将网络数据包定义文件解析生成各个不同类型的分析代码;
[0019] 步骤S2:对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执 行文件来获取分析代码中的定义参数;
[0020] 步骤S3 :将获取的定义参数通过字符串格式化进行代码转换,生成目标语言的定 义文件。
[0021] 字符串格式化是指把字符串(即文本)、数字(整数、浮点数等)等元素,按照一定 的格式(即整数输出、取N位小数输出、十六进制输出等格式),组合成一个完整的代码转换 格式,使系统处理数据的时候运行速度快速。
[0022] 在上述技术方案的基础上,本发明还可以做如下改进。
[0023] 进一步,所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体 定义内容。
[0024] 进一步,所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码 和结构体分析代码。
[0025] 进一步,步骤S2中,对各个不同类型的分析代码通过操作符typeid和sizeof进 行编译生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数包括各成 员变量的名称、类型、值和长度。
[0026] 进一步,所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移 量的数据。
[0027] 采用上述进一步方案的有益效果是:获取了相应的名称、类型、值、偏移量等信息 之后,马上就通过字符串格式代码转换为目标语言的定义,这样可以不必再写这些信息的 存储代码,处理速度快且效率高。
[0028] 本发明针对结构体网络数据包定义文件需用人力手工转换为目标语言的定义文 件的问题,提供了一种可自动化地完成这一转换过程的处理方法,以供目标语言与旧有的 网络数据包结构体(如基于C/C++的网络数据包定义文件)进行转换,该处理方法速度快, 转换准确,不需人工参与,节省了开发人员的时间,降低了此类互联网软件客户端的开发成 本,提高了开发效率。
【附图说明】
[0029] 图1为本发明跨语言转换网络数据包定义文件的处理系统的模块框图;
[0030] 图2为本发明跨语言转换网络数据包定义文件的处理方法的方法流程图。
[0031] 附图中,各标记所代表的部件名称如下:
[0032] 1、解析模块,2、获取模块3、语言转换模块。
【具体实施方式】
[0033] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并 非用于限定本发明的范围。
[0034] 如图1所示,一种跨语言转换网络数据包定义文件的处理系统,包括解析模块1、 获取模块2和语言转换模块3,
[0035] 所述解析模块1,用于将网络数据包定义文件解析生成各个不同类型的分析代 码;
[0036] 所述获取模块2,用于对各个不同类型的分析代码进行编译生成可执行文件,再执 行所述可执行文件来获取分析代码中的定义参数;
[0037] 所述语言转换模块3,用于将获取的定义参数字符串格式化进行代码转换,生成目 标语言的定义文件。
[0038] 所述网络数据包定义文件包括宏定义内容、枚举类型定义内容和结构体定义内 容。
[0039] 所述各个不同类型的分析代码包括宏定义分析代码、枚举类型分析代码和结构体 分析代码。
[0040] 所述获取模块对各个不同类型的分析代码通过操作符typeid和sizeof进行编译 生成可执行文件,再执行所述可执行文件从而获取分析代码中的定义参数,所述定义参数 包括各成员变量的名称、类型、值和长度。
[0041] 所述定义参数还包括通过取地址相减法获取所述各成员变量的内存偏移量的数 据。
[0042] 如图2所示,一种跨语言转换网络数据包定义文件的处理方法,包括如下步骤:
[0043] 步骤S1 :将网络数据包定义文件解析生成各个不同类型的分析代码;
[0044] 步骤S2 :对各个不同类型的分析代码进行编译生成可执行文件,再执行所述可执 行文件来获取分析代码中的定义参数;
[0045] 步骤S3 :将获取的定义参数通过字符串格式化进行代码转换,生成
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1