CN106302442B - 一种基于Java语言的网络通讯数据包解析方法 - Google Patents

一种基于Java语言的网络通讯数据包解析方法 Download PDF

Info

Publication number
CN106302442B
CN106302442B CN201610663022.5A CN201610663022A CN106302442B CN 106302442 B CN106302442 B CN 106302442B CN 201610663022 A CN201610663022 A CN 201610663022A CN 106302442 B CN106302442 B CN 106302442B
Authority
CN
China
Prior art keywords
function
data
class
note
customized
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
Application number
CN201610663022.5A
Other languages
English (en)
Other versions
CN106302442A (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.)
Guangzhou Huiruisitong Technology Co Ltd
Original Assignee
Guangzhou Huiruisitong Information 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 Guangzhou Huiruisitong Information Technology Co Ltd filed Critical Guangzhou Huiruisitong Information Technology Co Ltd
Priority to CN201610663022.5A priority Critical patent/CN106302442B/zh
Publication of CN106302442A publication Critical patent/CN106302442A/zh
Application granted granted Critical
Publication of CN106302442B publication Critical patent/CN106302442B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Communication Control (AREA)
  • Devices For Executing Special Programs (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种网络通讯数据包解析方法,包括以下步骤:S1、编写自定义注解;S2、根据自定义注解定义的内容编写相应的逻辑处理,并封装为“数据转换类”;S3、根据协议的协议结构,编写协议的数据实体类;S4、调用“数据转换类”,载入待解析的数据实体,反射获取数据实体类中相应信息,根据该信息调用相应的逻辑处理,输出解析结果。本发明利用Java的自定义注解与反射机制组合,注解可以无限扩展,根据扩展的注解实现相应的功能,大大提高其扩展性、约束性、灵活性、灵活性,简化了复杂性。

Description

一种基于Java语言的网络通讯数据包解析方法
技术领域
本发明涉及网络通讯领域,特别涉及一种基于Java语言的网络通讯数据包解析方法。
背景技术
计算机系统和网络的大量普及使用使全球跨入了信息化时代。但是,正由于现代社会中几乎一切都在“计算机化”,如经济活动(生产、流通、交换、消费等)过程中的管理都已经完成基于计算机系统在运行,而计算机系统的核心是“软件”,也就是说都是基于“软件(程序)”在运行,但从另一角度出发来看软件与软件之间需要交流那么就得通过庞大的“网络”进行交互。“网络”中的语言就像我们平常在生活中一样,提前拟定了一份协议,什么样的词语组合代表着什么样的意思,“网络”中的语言也不例外,在这里我们要提到的就是一种网络语言(网络数通讯据包)解析的方法。从最初传统的一对一关系,随着时间的变化,技术的更新改革,变化为现在的一对多关系,是技术领域上的一大里程碑。这种解析方法的好处在于明确每一份拟定的协议特有的解析方法或函数,如果程序解析模块出错,会很容易定位或者修改错误,与其他协议互不相关,但相对的对于多分协议需要写N份协议的解析方法或者函数,对于后期的维护、与扩展成本也是相当的高。
发明内容
为了克服现有技术的上述缺点与不足,本发明的目的在于一种基于Java语言的网络通讯数据包解析方法,扩展性强,便于新协议的添加,且成本低。
本发明的目的通过以下技术方案实现:
一种基于Java语言的网络通讯数据包解析方法,包括以下步骤:
S1、编写自定义注解;
S2、根据自定义注解定义的内容编写相应的逻辑处理,并封装为“数据转换类”;
S3、根据协议的协议结构,编写协议的数据实体类;
S4、调用“数据转换类”,载入待解析的数据实体,反射获取数据实体类中相应信息,根据该信息调用相应的逻辑处理,输出解析结果。
步骤S1所述编写自定义注解,包括:
S1.1、定义基础数据类型,所述基础数据类型包括枚举和扩展枚举;
S1.2、创建注解类:指定注解所修饰的对象范围,指定注解被保留的时间长短;定义注解的基本字段属性。
步骤S2所述根据自定义注解定义的内容编写相应的逻辑处理,并封装为“数据转换类”,具体包括:
S2.1、创建协议类,在字段上引用自定义注解,赋值自定义注解各字段属性的值;
S2.2、创建数据转换类,编写各基础数据类型互转函数、对象反射函数、对象转字节数组函数、字节数组转对象函数、转换逻辑处理函数,并根据注解编写扩展函数。
步骤S4所述调用“数据转换类”,载入待解析的数据实体,反射获取数据实体类中相应信息,根据该信息调用相应的逻辑处理,输出解析结果,具体包括:
S4.1.1、调用数据转换类对象转字节的函数;
S4.1.2、调用数据转换类对象反射函数,获取协议对象实例的字段属性、自定义注解字段属性、方法函数;
S4.1..3、调用转换逻辑处理函数,根据自定义注解的字段属性调用相应的基础数据类型互转函数与扩展函数;
S4.1.4、调用函数处理完毕后,在有多个协议对象实例的时候合并转换出来的字节数组,返回字节数组;
S4.2.1、调用数据转换类字节数组转对象函数,此时字节数组转对象函数的参数为字节数组、Object数组;
S4.2.2、调用数据转换类对象反射函数,获取协议对象实例的字段属性、自定义注解字段属性、方法函数;
S4.2.3、调用转换逻辑处理函数,根据自定义注解的字段属性调用相应的基础数据类型互转函数与扩展函数;
S4.2.4、调用函数处理完毕后,把转换后的数据赋值协议对象实例的字段属性,反馈结果。
本发明的Java语言的网络通讯数据包解析方法,可以用注解在某个类上面进行标注,这样编译器会在编译文件时,会根据己设定的方法来编译类;本发明还利用Java的反射机制,在运行时中动态获取信息及动态调用对象方法的功能,对任意一个类,都能知道这个类的所有属性和方法,对于任意一个对象,都能够调用任意一个方法和属性。
与现有技术相比,本发明具有以下优点和有益效果:
(1)本发明利用Java的自定义注解与反射机制组合,注解可以无限扩展,根据扩展的注解实现相应的功能,大大提高其扩展性。
(2)本发明注解中定义了相应的枚举与字段,对一系列的扩展都有着相应的约束,大大提高约束性。
(3)本发明注解中可选择需要的注解字段作为组合,大大提高其灵活性。
(4)本发明注解是一部分、协议实体是一部分、协议反射解析是一部分,层次分明提高层次结构的清晰度,提高其阅读性。
(5)本发明通过反射获取注解做出相应的处理,从调用者角度看淡简化复杂性,是需要按部就班的使用即可,降低成本。
附图说明
图1为本发明的网络通讯数据包解析方法的流程图。
具体实施方式
下面结合实施例,对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例
如图1所示,本实施例的网络通讯数据包解析方法,包括以下步骤:
步骤1、定义基础数据类型枚举DataType、扩展枚举等。DataType中字段包含dt_UINT8、dt_INT8、dt_UINT16、dt_INT16、dt_UINT32、dt_INT32、dt_UINT64、dt_INT64、dt_FLOAT、dt_DOUBLE、dt_ASCII、dt_BOOLEAN、dt_UINT8_ARRAY、dt_INT8_ARRAY、dt_UINT16_ARRAY、dt_INT16_ARRAY、dt_UINT32_ARRAY、dt_INT32_ARRAY、dt_UINT64_ARRAY、dt_INT64_ARRAY、dt_FLOAT_ARRAY、dt_DOUBLE_ARRAY、dt_NONE;
步骤2、创建注解类DataColumn,Target指定注解所修饰的对象范围@Target(ElementType.FIELD),Retention指定注解被保留的时间长短@Retention(RetentionPolicy.RUNTIME)。定义好注解的基本字段属性,字段属性包括数据类型dataType数据类型枚举默认值为dt_NONE、length数据长度默认值为0(一般字符串ASCII需要指定长度)、order排序序号默认值为0(排列序号如不指定按协议类默认排序)、describe描述默认值为空、enable是否有效默认值为true;
步骤3、创建协议类,根据协议定义协类的基本字段属性。在字段上引用自定义注解,赋值自定义注解各字段属性的值@DataColumn(dataType=DataType.dt_UINT8,describe="描述")等等;
步骤4、创建数据转换类ConvertUtil,编写各基础数据类型互转函数(包含shortToByte()、byteToShort()、charToByte()、byteToChar()、intToByte()、bytesToInt()、longToByte()、byteToLong()、doubleToByte()、StringToByte()、byteToString()、stringToAscii()、asciiToString()、高地位转换函数high2low())、编写对象反射函数(包含反射获取对象属性、函数等函数getreFlection()、反射赋值函数setreFlection())、编写对象转字节数组函数(主入口getBytesByObjects())、编写字节数组转对象函数(包含主入口setObjectsByBytes())、编写转换逻辑处理函数(包含字段排序函数fieldDesc()、字节数组拷贝函数getArrayCopy())、根据注解编写扩展函数等。
步骤5、创建协议对象实例,赋值协议对象实例各字段属性的值;
步骤6.1、调用数据转换类对象转字节的函数getBytesByObjects(),注意对象转字节函数参数为Object数组类型Object[]cl,可加入多个协议对象实例进行转换newObject[]{obj1、obj2、obj3};
步骤6.2、调用数据转换类对象反射函数getreFlection(),获取协议对象实例的字段属性、自定义注解字段属性、方法函数等;
步骤6.3、调用转换转换逻辑处理函数,根据自定义注解的字段属性调用相应的基础数据类型互转函数与扩展函数等;
步骤6.4、调用函数处理完毕后,在有多个协议对象实例的时候合并转换出来的字节数组,返回字节数组;
步骤7.1、调用数据转换类字节数组转对象函数setObjectsByBytes(),注意字节数组转对象函数参数为字节数组、Object数组byte[]data,Object[]cl,因为在Java中有引用对象的说法,在函数执行完后,会以引用方式反馈,类似C/C++地址引用;
步骤7.2、调用数据转换类对象反射函数getreFlection(),获取协议对象实例的字段属性、自定义注解字段属性、方法函数等;
步骤7.3、调用转换逻辑处理函数,根据自定义注解的字段属性调用相应的基础数据类型互转函数与扩展函数等;
步骤7.5、调用函数处理完毕后,调用反射赋值函数setreFlection()把转换后的数据赋值协议对象实例的字段属性,反馈结果。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (3)

1.一种基于Java语言的网络通讯数据包解析方法,其特征在于,包括以下步骤:
S1、编写自定义注解;
S2、根据自定义注解定义的内容编写相应的逻辑处理,并封装为“数据转换类”;
S3、根据协议的协议结构,编写协议的数据实体类;
S4、调用“数据转换类”,载入待解析的数据实体,反射获取数据实体类中相应信息,根据该信息调用相应的逻辑处理,输出解析结果;
步骤S4所述调用“数据转换类”,载入待解析的数据实体,反射获取数据实体类中相应信息,根据该信息调用相应的逻辑处理,输出解析结果,具体包括:
S4.1.1、调用数据转换类对象转字节的函数;
S4.1.2、调用数据转换类对象反射函数,获取协议对象实例的字段属性、自定义注解字段属性、方法函数;
S4.1.3、调用转换逻辑处理函数,根据自定义注解的字段属性调用相应的基础数据类型互转函数与扩展函数;
S4.1.4、调用函数处理完毕后,在有多个协议对象实例的时候合并转换出来的字节数组,返回字节数组;
S4.2.1、调用数据转换类字节数组转对象函数,此时字节数组转对象函数的参数为字节数组、Object数组;
S4.2.2、调用数据转换类对象反射函数,获取协议对象实例的字段属性、自定义注解字段属性、方法函数;
S4.2.3、调用转换逻辑处理函数,根据自定义注解的字段属性调用相应的基础数据类型互转函数与扩展函数;
S4.2.4、调用函数处理完毕后,把转换后的数据赋值协议对象实例的字段属性,反馈结果。
2.根据权利要求1所述的基于Java语言的网络通讯数据包解析方法,其特征在于,步骤S1所述编写自定义注解,包括:
S1.1、定义基础数据类型,所述基础数据类型包括枚举和扩展枚举;
S1.2、创建注解类:指定注解所修饰的对象范围,指定注解被保留的时间长短;定义注解的基本字段属性。
3.根据权利要求1所述的基于Java语言的网络通讯数据包解析方法,其特征在于,步骤S2所述根据自定义注解定义的内容编写相应的逻辑处理,并封装为“数据转换类”,具体包括:
S2.1、创建协议类,在字段上引用自定义注解,赋值自定义注解各字段属性的值;
S2.2、创建数据转换类,编写各基础数据类型互转函数、对象反射函数、对象转字节数组函数、字节数组转对象函数、转换逻辑处理函数,并根据注解编写扩展函数。
CN201610663022.5A 2016-08-12 2016-08-12 一种基于Java语言的网络通讯数据包解析方法 Active CN106302442B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610663022.5A CN106302442B (zh) 2016-08-12 2016-08-12 一种基于Java语言的网络通讯数据包解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610663022.5A CN106302442B (zh) 2016-08-12 2016-08-12 一种基于Java语言的网络通讯数据包解析方法

Publications (2)

Publication Number Publication Date
CN106302442A CN106302442A (zh) 2017-01-04
CN106302442B true CN106302442B (zh) 2019-06-25

Family

ID=57669369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610663022.5A Active CN106302442B (zh) 2016-08-12 2016-08-12 一种基于Java语言的网络通讯数据包解析方法

Country Status (1)

Country Link
CN (1) CN106302442B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108399095B (zh) * 2017-02-04 2021-08-10 北京京东尚科信息技术有限公司 支持动态管理定时任务的方法、系统、设备和存储介质
CN108710504A (zh) * 2017-04-10 2018-10-26 北大方正集团有限公司 数据库操作方法及装置
CN108694194A (zh) * 2017-04-10 2018-10-23 北京京东尚科信息技术有限公司 一种构造数据对象的方法和装置
CN109462584A (zh) * 2018-10-31 2019-03-12 哈尔滨电工仪表研究所有限公司 Dl/t 698.45协议中记录型数据的解析方法
CN109828784B (zh) * 2019-02-03 2022-04-26 普信恒业科技发展(北京)有限公司 一种任务抓取方法及装置
CN110457013B (zh) * 2019-07-12 2023-11-17 创新先进技术有限公司 程序组件配置装置及方法
CN110381056B (zh) * 2019-07-17 2021-08-03 钛马信息网络技术有限公司 基于Netty的私有协议编解码方法及装置
CN110908644B (zh) * 2019-10-16 2023-12-12 浙江大搜车软件技术有限公司 状态节点的配置方法、装置、计算机设备和存储介质
CN111970267B (zh) * 2020-08-13 2022-08-30 国网电子商务有限公司 一种数据协议转换方法、装置、电子设备及存储介质
CN112748915B (zh) * 2020-12-30 2022-10-25 浪潮通用软件有限公司 一种基于StimulSoft的动态扩展业务函数的方法及设备
CN115103041A (zh) * 2022-07-18 2022-09-23 深圳市雁联计算系统有限公司 一种基于fix协议实现业务的方法及系统
CN115455239B (zh) * 2022-11-10 2023-01-06 北京易诚互动网络技术股份有限公司 一种java类实例和目标格式数据的转换方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263722B1 (en) * 1999-05-12 2007-08-28 Fraunhofer Crcg, Inc. Obfuscation of executable code
CN102810069A (zh) * 2012-07-16 2012-12-05 深圳市融创天下科技股份有限公司 一种java对象的请求和响应方法、装置、系统和终端
CN103399734A (zh) * 2013-07-10 2013-11-20 北京慧点科技股份有限公司 生成rest服务和rest实现的方法及对应的设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263722B1 (en) * 1999-05-12 2007-08-28 Fraunhofer Crcg, Inc. Obfuscation of executable code
CN102810069A (zh) * 2012-07-16 2012-12-05 深圳市融创天下科技股份有限公司 一种java对象的请求和响应方法、装置、系统和终端
CN103399734A (zh) * 2013-07-10 2013-11-20 北京慧点科技股份有限公司 生成rest服务和rest实现的方法及对应的设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Java 基本类型与byte数组之间相互转换;ATCO;《CSDN论坛》;20121130;第1-5页
用反射注解实现的ORM,http://www.iteye.com/topic/674292;awfrun;《Java企业应用论坛》;20100524;第1-11页

Also Published As

Publication number Publication date
CN106302442A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN106302442B (zh) 一种基于Java语言的网络通讯数据包解析方法
CN106528129B (zh) 一种Web应用界面生成系统及方法
Chu et al. The design and implementation of a declarative sensor network system
CN105704234B (zh) 智能设备的控制方法及装置
CN106126540B (zh) 数据库访问系统及其访问方法
CN101996132A (zh) 公用对象请求代理程序体系结构接口自动测试方法和装置
CN109768970A (zh) 一种基于可配置的通用协议生成方法
CN109240688A (zh) 界面开发方法、电子装置及可读存储介质
CN106341444A (zh) 数据访问方法和装置
US7818719B2 (en) Extending expression-based syntax for creating object instances
CN107632817A (zh) 一种移动应用高效迭代Spark框架
CN109840083A (zh) 网页组件模板构建方法、装置、计算机设备和存储介质
CN103176892A (zh) 一种页面监控方法及系统
CN106295326A (zh) 一种用于获取显卡内容的内联hook方法和系统
CN112035090A (zh) 基于容器化技术实现智能合约智慧化管理系统及方法
CN108021357A (zh) 程序调用的优化方法及装置
CN110633076A (zh) 一种自动生成Solidity智能合约Java客户端程序的方法
CN106873952A (zh) 移动端网页开发的数据处理系统和方法、及应用装置
CN108234299A (zh) 基于模型的可配置协议数据网关及网关的信息处理方法
CN106027674A (zh) 一种互联网与智能制造相结合的架构系统
CN111399828A (zh) 一种基于模型驱动的逻辑设备建模方法及终端
JP2001325098A (ja) アプリケーションプログラムの作成方法、データベース操作方法、項目オブジェクト管理方法、モジュール動作制御方法ならびにデータベース操作方法、項目オブジェクト管理方法およびモジュール動作制御方法を実現するためのプログラムを記録したコンピュータ可読な記録媒体
CN116521181A (zh) 基于游戏系统的脚本数据处理方法、装置、设备及介质
Gomes et al. Architecting dynamic reconfiguration in dependable systems
CN109213605A (zh) 一种适用于高并发场景的服务器i/o实现方法

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
CP03 Change of name, title or address

Address after: 510000 no.2-8, North Street, Nancun Town, Panyu District, Guangzhou City, Guangdong Province

Patentee after: Guangzhou huiruisitong Technology Co.,Ltd.

Address before: No.2, Nancun North Street, Nancun Town, Panyu District, Guangzhou, Guangdong 511442

Patentee before: GUANGZHOU HUIRUI SITONG INFORMATION TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address
PP01 Preservation of patent right

Effective date of registration: 20230207

Granted publication date: 20190625

PP01 Preservation of patent right
PD01 Discharge of preservation of patent

Date of cancellation: 20240402

Granted publication date: 20190625

PD01 Discharge of preservation of patent