CN103095726A - 一种协议解析器的处理方法和装置 - Google Patents
一种协议解析器的处理方法和装置 Download PDFInfo
- Publication number
- CN103095726A CN103095726A CN2013100486119A CN201310048611A CN103095726A CN 103095726 A CN103095726 A CN 103095726A CN 2013100486119 A CN2013100486119 A CN 2013100486119A CN 201310048611 A CN201310048611 A CN 201310048611A CN 103095726 A CN103095726 A CN 103095726A
- Authority
- CN
- China
- Prior art keywords
- message
- configuration table
- class field
- resolved
- 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.)
- Pending
Links
Images
Abstract
本发明公开一种协议解析器的处理方法和装置,所述协议解析器内置报文帧配置表和报文详细配置表,所述处理方法包括:S1.从所述报文帧配置表中读取待解析报文所对应的类信息;S2.通过编程语言的反射机制声明所述类信息的对象;S3.从所述报文详细配置表中读取所述待解析报文所对应的类字段信息;S4.根据所述反射机制获取所述对象的所有属性,并根据所述类字段信息对所述对象的各个属性赋值;S5.返回已赋值的对象。通过报文帧配置表和报文详细配置表,并根据编程语言的反射机制,自动将报文封装成应用程序中的类对象,该技术方案不仅降低了维护成本和代码编写复杂度,而且增加了核心代码的安全性,从而提高了项目的开发效率。
Description
技术领域
本发明涉及协议解析领域,尤其涉及一种协议解析器的处理方法和装置。
背景技术
目前,一些内部通信,特别是针对内部传输字符型数据和对通信安全要求不高的通信中,经常会降低协议结构的复杂度,通常采用简易的报文结构,例如在报文各数据间使用特殊字符(如逗号、分号等)来分隔各数据边界,而不再采用如表1所示的采用固定长度的报文帧结构:
表1
报文头 | 报文长度 | 帧类型 | 报文类型 | 报文内容 | 校验位 |
2Byte | 2Byte | 1Byte | 1Byte | 变长 | 2Byte |
针对以上使用特殊字符分隔各数据边界的报文,在当前解析协议,将其转换成应用程序内的类对象时,通常采用硬编码方式,即为协议的各种情况编码程序代码,这使得对协议的处理投入太多的时间,而且容易产生失误,导致错误发生;并且由于代码量的增多,当项目新成员加入项目时,又需要投入时间与人员对其进行相关培训,增加项目开发成本。
发明内容
本发明要解决的技术问题在于,针对现有技术采用硬编码方式成本高的缺陷,提供一种协议解析器的处理方法和装置,该技术方案通过协议解析的处理方式,通过读取、声明和赋值的方法,自动将报文封装成应用程序中的类对象,从而不必为协议的各种情况分别编写代码,不仅降低了成本,而且增加了核心代码的安全性,从而提高了项目的开发效率。
本发明解决其技术问题所采用的技术方案是:提供一种协议解析器的处理方法,所述协议解析器内置报文帧配置表和报文详细配置表,所述处理方法包括以下步骤:
S1.从所述报文帧配置表中读取待解析报文所对应的类信息;
S2声明所述类信息的对象;
S3.从所述报文详细配置表中读取所述待解析报文所对应的类字段信息;
S4.获取所述对象的所有属性,并根据所述类字段信息对所述对象的各个属性赋值;
S5.返回已赋值的对象。
优选地,在所述步骤S1之前还包括以下步骤:
S0.将所述待解析报文的配置信息以记录的方式分别添加至所述报文帧配置表和所述报文详细配置表中。
优选地,所述待解析报文的配置信息由报文头、报文长度、帧类型、报文类型、报文内容以及校验位组成。
优选地,所述报文帧配置表包括报文ID、报文头、帧类型、报文类型、校验位以及类信息。
优选地,所述报文详细配置表包括报文详细ID、类字段信息以及协议位置编号,其中,所述类字段信息包括类字段名称和类字段类型。
本发明还提供一种协议解析器的处理装置,所述协议解析器内置报文帧配置表和报文详细配置表,所述处理装置包括:
第一读取模块,用于从所述报文帧配置表中读取待解析报文所对应的类信息;
声明模块,与所述第一读取模块连接,声明所述类信息的对象;
第二读取模块,与所述声明模块连接,用于从所述报文详细配置表中读取所述待解析报文所对应的类字段信息;
赋值模块,与所述第二读取模块,获取所述对象的所有属性,并根据所述类字段信息对所述对象的各个属性赋值;
返回模块,与所述赋值模块连接,用于返回已赋值的对象。
优选地,所述处理装置还包括与所述第一读取模块连接的添加模块,其中:
所述添加模块,用于将所述待解析报文的配置信息以记录的方式分别添加至所述报文帧配置表和所述报文详细配置表中。
优选地,所述待解析报文的配置信息由报文头、报文长度、帧类型、报文类型、报文内容以及校验位组成。
优选地,所述报文帧配置表包括报文ID、报文头、帧类型、报文类型、校验位以及类信息。
优选地,所述报文详细配置表包括报文详细ID、类字段信息以及协议位置编号,其中,所述类字段信息包括类字段名称和类字段类型。
实施本发明的技术方案,具有以下有益效果:通过报文帧配置表和报文详细配置表,并根据编程语言的反射机制,自动将报文封装成应用程序中的类对象,不必为协议的各种情况分别编写代码,该技术方案不仅降低了维护成本和代码编写复杂度,而且增加了核心代码的安全性,从而提高了项目的开发效率。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明协议解析器的处理方法的流程图;
图2是本发明协议解析器的处理装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的实施例中,该协议解析器内置报文帧配置表和报文详细配置表,其中,该协议解析器中的待解析报文的配置信息由报文头、报文长度、帧类型、报文类型、报文内容以及校验位组成。
需要特别解释的是,该报文帧配置表包括报文ID、报文头、帧类型、报文类型、校验位以及类信息,应当解释的是,该报文ID作为识别该报文帧的唯一代码,该报文头对应待解析报文的配置信息中的报文头;该帧类型对应待解析报文的配置信息中的帧类型;该报文类型对应待解析报文的配置信息中的报文类型;校验位对应待解析报文的配置信息中的校验位;该类信息为该待解析报文所对应的类,包括包名和类名。
所述报文详细配置表包括报文详细ID、类字段信息以及协议位置编号,其中,所述类字段信息包括类字段名称和类字段类型。应当解释的是,该报文详细ID也作为识别该报文详细的唯一代码;该协议位置编号对应待解析报文的配置信息中报文内容中各数据项的所在位置。报文帧配置表和报文详细配置表是协议解析器自带的,两表中的信息内容可以增加和更改。
值得注意的是,如果用户还需要在协议解析器中增加其他的配置信息,只需要更改报文详细配置表中的信息即可,例如可以在报文详细配置表中增加取值范围的限制等。
实施例一:
请参阅图1,图1是本发明协议解析器的处理方法的流程图,如图1所示,所述处理方法包括以下步骤:
在步骤S0中,将待解析报文的配置信息分别添加至报文帧配置表和报文详细配置表中;具体来说,所述待解析报文的配置信息以记录的方式分别添加至报文帧配置表和报文详细配置表中,因为数据库一般以表格形式保存待解析报文的配置信息,即每一行表示一条记录。应当说明的是,若该待解析报文的配置信息已添加上述报文帧配置表和报文详细配置表,则该步骤可省略。
在步骤S1中,从报文帧配置表中读取待解析报文所对应的类信息。
在步骤S2中,通过编程语言的反射机制声明所述类信息的对象,应当解释的是,在本发明的实施例中,反射机制作为编程语言的一个特性,例如编程语言C、C++以及JAVA,不同的编程语言具有不同的反射机制,在此不一一赘述,反射机制可以通过类的名字来创建一个对象,并且在协议解析处理时动态地创建对象,为编程语言的一种特性,通过这一特性,就可以在运行时动态地创建对象,传统情况下,创建一个对象在编码阶段进行。
在步骤S3中,从所述报文详细配置表中读取所述待解析报文所对应的类字段信息。
在步骤S4中,根据所述反射机制获取所述对象的所有属性,并根据所述类字段信息对所述对象的各个属性赋值。具体来说,通过调用编程语言内部的某一函数或某一代码获取对象的所有属性,并根据报文详细配置表中的类字段信息对某一函数或某一代码中的各个参数赋值。
在步骤S5中,返回已赋值的对象,即步骤S4中与已赋值的各个属性对应的对象,需要说明的是,返回已赋值的对象后,该协议解析器就自动将待解析报文的配置信息中的数据转换成应用程序(例如计算机应用程序等)所识别的类对象,以便应用程序内部使用,因为在应用程序内部均使用类来表示数据。
实施例二:
以编程语言为JAVA,声明对象为MeteorologicalData,类字段信息为java.lang.Integer为例说明该协议解析处理器的处理方法。
在步骤S1中,从报文帧配置表中读取待解析报文所对应的类信息com.casic.ca2000.MeteorologicalData。
在步骤S2中,通过编程语言的反射机制声明所述类信息的对象MeteorologicalData。
在步骤S3中,从所述报文详细配置表中读取所述待解析报文所对应的类字段信息java.lang.Integer。
在步骤S4中,根据所述反射机制获取对象MeteorologicalData的所有属性,并根据类字段信息java.lang.Integer对对象MeteorologicalData的各个属性赋值,该对象MeteorologicalData中的各个属性指的是对象MeteorologicalData中所定义的各个变量,例如各个参数的取值范围等等。
在步骤S5中,返回已赋值的对象,即返回对象MeteorologicalData。
本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。各实施例中采用的是基于读取类信息、声明对象、读取类字段信息及给属性赋值的方法通过协议解析器来实现报文自动封装成类对象的技术手段,解决如何减少协议处理时间的技术问题,获得降低成本,增强代码安全性的技术效果。
实施例三:
请参阅图2,图2是本发明协议解析器的处理装置的结构示意图,如图2所示,所述协议解析器内置报文帧配置表和报文详细配置表,所述处理装置包括:
所述添加模块100,用于将所述待解析报文的配置信息以记录的方式分别添加至所述报文帧配置表和所述报文详细配置表中。应当说明的是,若该待解析报文的配置信息已添加上述报文帧配置表和报文详细配置表,则该添加模块100可省略。
第一读取模块200,与所述添加模块100连接,用于从所述报文帧配置表中读取待解析报文所对应的类信息。
声明模块300,与所述第一读取模块200连接,用于通过编程语言的反射机制声明所述类信息的对象。
第二读取模块400,与所述声明模块300连接,用于从所述报文详细配置表中读取所述待解析报文所对应的类字段信息。
赋值模块500,与所述第二读取模块400连接,用于根据所述反射机制获取所述对象的所有属性,并根据所述类字段信息对所述对象的各个属性赋值。
返回模块600,与所述赋值模块500连接,用于返回已赋值的对象。
通过报文帧配置表和报文详细配置表,并根据编程语言的反射机制,自动将报文封装成应用程序中的类对象,该技术方案只需要编写简单的协议解析代码降低了代码编写复杂度,维护人员只需要了解协议的配置过程即可完成新协议的增加、修改和删除,降低了维护成本;而且只有设计人员知道协议的具体处理过程,其他人员不需要了解协议即可完成任务,增加了核心代码的安全性;从而不需要为所要的具体协议编写代码,只需要通过简单的协议配置即可完成协议解析处理,提高了项目的开发效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种协议解析器的处理方法,所述协议解析器内置报文帧配置表和报文详细配置表,其特征在于,所述处理方法包括以下步骤:
S1.从所述报文帧配置表中读取待解析报文所对应的类信息;
S2.声明所述类信息的对象;
S3.从所述报文详细配置表中读取所述待解析报文所对应的类字段信息;
S4获取所述对象的所有属性,并根据所述类字段信息对所述对象的各个属性赋值;
S5.返回已赋值的对象。
2.根据权利要求1所述的处理方法,其特征在于,在所述步骤S1之前还包括以下步骤:
S0.将所述待解析报文的配置信息分别添加至所述报文帧配置表和所述报文详细配置表中。
3.根据权利要求2所述的处理方法,其特征在于,所述待解析报文的配置信息由报文头、报文长度、帧类型、报文类型、报文内容以及校验位组成。
4.根据权利要求2所述的处理方法,其特征在于,所述报文帧配置表包括报文ID、报文头、帧类型、报文类型、校验位以及类信息等。
5.根据权利要求2所述的处理方法,其特征在于,所述报文详细配置表包括报文详细ID、类字段信息以及协议位置编号,其中,所述类字段信息包括类字段名称和类字段类型。
6.一种协议解析器的处理装置,其特征在于,所述协议解析器内置报文帧配置表和报文详细配置表,所述处理装置包括:
第一读取模块,用于从所述报文帧配置表中读取待解析报文所对应的类信息;
声明模块,与所述第一读取模块连接,用于声明所述类信息的对象;
第二读取模块,与所述声明模块连接,用于从所述报文详细配置表中读取所述待解析报文所对应的类字段信息;
赋值模块,与所述第二读取模块,用于获取所述对象的所有属性,并根据所述类字段信息对所述对象的各个属性赋值;
返回模块,与所述赋值模块连接,用于返回已赋值的对象。
7.根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括与所述第一读取模块连接的添加模块,其中:
所述添加模块,用于将所述待解析报文的配置信息分别添加至所述报文帧配置表和所述报文详细配置表中。
8.根据权利要求7所述的处理装置,其特征在于,所述待解析报文的配置信息由报文头、报文长度、帧类型、报文类型、报文内容以及校验位组成。
9.根据权利要求7所述的处理装置,其特征在于,所述报文帧配置表包括报文ID、报文头、帧类型、报文类型、校验位以及类信息等。
10.根据权利要求7所述的处理装置,其特征在于,所述报文详细配置表包括报文详细ID、类字段信息以及协议位置编号,其中,所述类字段信息包括类字段名称和类字段类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100486119A CN103095726A (zh) | 2013-02-07 | 2013-02-07 | 一种协议解析器的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100486119A CN103095726A (zh) | 2013-02-07 | 2013-02-07 | 一种协议解析器的处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103095726A true CN103095726A (zh) | 2013-05-08 |
Family
ID=48207859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100486119A Pending CN103095726A (zh) | 2013-02-07 | 2013-02-07 | 一种协议解析器的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103095726A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281632A (zh) * | 2013-07-11 | 2015-01-14 | 深圳市金正方科技股份有限公司 | 基于对象协议映射的编码解码方法及系统 |
CN105099994A (zh) * | 2014-04-29 | 2015-11-25 | 比亚迪股份有限公司 | 报文解析方法和装置 |
CN108460688A (zh) * | 2018-01-08 | 2018-08-28 | 平安科技(深圳)有限公司 | 核保校验的方法、装置、存储介质及终端 |
CN109842517A (zh) * | 2018-08-03 | 2019-06-04 | 上海诣星智能科技有限公司 | 统一物联网设备管理平台 |
CN110677398A (zh) * | 2019-09-20 | 2020-01-10 | 成都艾克赛特信息科技有限公司 | 全液晶仪表ac与gc集成通讯协议、通讯系统及方法 |
CN111638874A (zh) * | 2020-05-27 | 2020-09-08 | 江西五十铃汽车有限公司 | 基于Matlab软件的汽车控制器编码信息写入和读取方法 |
CN112365236A (zh) * | 2020-11-16 | 2021-02-12 | 浪潮云信息技术股份公司 | 一种应用于投资项目受理系统推荐事项办理清单的方法 |
CN114390120A (zh) * | 2022-01-04 | 2022-04-22 | 烽火通信科技股份有限公司 | 一种对协议帧的处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101141467A (zh) * | 2007-10-31 | 2008-03-12 | 杭州华三通信技术有限公司 | 配置方法及系统 |
CN102566984A (zh) * | 2010-12-07 | 2012-07-11 | 北大方正集团有限公司 | 一种配置参数的方法及装置 |
CN102831497A (zh) * | 2012-07-26 | 2012-12-19 | 深圳市融创天下科技股份有限公司 | 一种创建工作流程的方法、系统和终端设备 |
US8347219B1 (en) * | 2010-03-31 | 2013-01-01 | Emc Corporation | Object-level display building |
-
2013
- 2013-02-07 CN CN2013100486119A patent/CN103095726A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101141467A (zh) * | 2007-10-31 | 2008-03-12 | 杭州华三通信技术有限公司 | 配置方法及系统 |
US8347219B1 (en) * | 2010-03-31 | 2013-01-01 | Emc Corporation | Object-level display building |
CN102566984A (zh) * | 2010-12-07 | 2012-07-11 | 北大方正集团有限公司 | 一种配置参数的方法及装置 |
CN102831497A (zh) * | 2012-07-26 | 2012-12-19 | 深圳市融创天下科技股份有限公司 | 一种创建工作流程的方法、系统和终端设备 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281632A (zh) * | 2013-07-11 | 2015-01-14 | 深圳市金正方科技股份有限公司 | 基于对象协议映射的编码解码方法及系统 |
CN104281632B (zh) * | 2013-07-11 | 2018-05-25 | 深圳市金正方科技股份有限公司 | 基于对象协议映射的编码解码方法及系统 |
CN105099994A (zh) * | 2014-04-29 | 2015-11-25 | 比亚迪股份有限公司 | 报文解析方法和装置 |
CN105099994B (zh) * | 2014-04-29 | 2019-01-11 | 比亚迪股份有限公司 | 报文解析方法和装置 |
CN108460688A (zh) * | 2018-01-08 | 2018-08-28 | 平安科技(深圳)有限公司 | 核保校验的方法、装置、存储介质及终端 |
CN109842517A (zh) * | 2018-08-03 | 2019-06-04 | 上海诣星智能科技有限公司 | 统一物联网设备管理平台 |
CN110677398A (zh) * | 2019-09-20 | 2020-01-10 | 成都艾克赛特信息科技有限公司 | 全液晶仪表ac与gc集成通讯协议、通讯系统及方法 |
CN111638874A (zh) * | 2020-05-27 | 2020-09-08 | 江西五十铃汽车有限公司 | 基于Matlab软件的汽车控制器编码信息写入和读取方法 |
CN111638874B (zh) * | 2020-05-27 | 2023-05-16 | 江西五十铃汽车有限公司 | 基于Matlab软件的汽车控制器编码信息写入和读取方法 |
CN112365236A (zh) * | 2020-11-16 | 2021-02-12 | 浪潮云信息技术股份公司 | 一种应用于投资项目受理系统推荐事项办理清单的方法 |
CN114390120A (zh) * | 2022-01-04 | 2022-04-22 | 烽火通信科技股份有限公司 | 一种对协议帧的处理方法和装置 |
CN114390120B (zh) * | 2022-01-04 | 2023-06-09 | 烽火通信科技股份有限公司 | 一种对协议帧的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103095726A (zh) | 一种协议解析器的处理方法和装置 | |
CN106649212A (zh) | 一种业务数据处理的方法及装置 | |
US9928283B2 (en) | Tracing data through a transformation process using tracer codes | |
CN113051285B (zh) | Sql语句的转换方法、系统、设备及存储介质 | |
CN110472068A (zh) | 基于异构分布式知识图谱的大数据处理方法、设备及介质 | |
CN111090417B (zh) | 二进制文件解析方法、装置、设备及介质 | |
CN101526963A (zh) | 网页编码识别方法、装置和终端设备 | |
CN107622080B (zh) | 一种数据处理方法及设备 | |
CN110955714B (zh) | 一种将非结构化文本转化为结构化文本的方法及装置 | |
JP7388078B2 (ja) | アクセス可能な機械学習バックエンド | |
CN107330014B (zh) | 一种数据表的创建方法与设备 | |
WO2012041672A1 (en) | Finding partition boundaries for parallel processing of markup language documents | |
CN103425632A (zh) | 一种序列化的方法、装置及处理器 | |
CN107797805B (zh) | 一种代码封装方法、装置及计算机可读存储介质 | |
CN106776779B (zh) | 基于Mac平台的JSON数据生成实体文件的方法 | |
CN107329756B (zh) | 程序文件的生成方法、装置、存储介质、处理器和终端 | |
CN109471878A (zh) | 一种变电站远动机自动比对系统 | |
WO2016086640A1 (zh) | 巡检报告生成的方法及装置 | |
CN112597171A (zh) | 表格关系可视化方法、装置、电子设备及存储介质 | |
US10782942B1 (en) | Rapid onboarding of data from diverse data sources into standardized objects with parser and unit test generation | |
CN110175917B (zh) | 参数图形化处理的装置及方法 | |
CN108132783A (zh) | 一种Web App的配置方法及装置 | |
CN111508562A (zh) | 流程描述性语言的可视化显示方法、装置、设备和介质 | |
CN101788977A (zh) | 一种医学检查报告编辑修改实现方法 | |
US10104207B1 (en) | Automatic protocol discovery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130508 |