用于网络字节打包和解包的协议数据单元PDU实现方法技术

技术编号:4244933 阅读:508 留言:0更新日期:2012-04-11 18:40
一种用于网络字节打包和解包的协议数据单元PDU实现方法,首先定义所需传输协议的可扩展标记语言XML字段配置文件,包括传输协议中字段的顺序、长度和数据类型;然后进行打包和解包;本发明专利技术解决了传统网络编程中存在的编程模型复杂,协议字段变更不便的问题,提高了网络字节流编程的效率,使得网络字节打包、解包变得简单;屏蔽了高低位字节的差异,提供良好的调试信息及提供了统一的流量监控。

【技术实现步骤摘要】

本专利技术涉及电信业务支撑系统,尤其是在线计费系统实时Socket消息的打包、解 包技术,具体地说是一种用于网络字节打包和解包的协议数据单元PDU实现方法。
技术介绍
现代电信业务支撑系统一般都由多个网元节点组成,分别完成计费、综合客服、短 信网关、语音网关、接续控制等功能,为了向最终用户提供电信业务,需要各个网元之间互 相通信,完成数据同步、业务接续控制等功能,在这样一个复杂的分布式系统中,基于TCP/ IP的网络通信需求无处不在。 传统的网络字节打包和解包需要时刻关注将各种Java数据类型转换为二进制数 据的细节,以及需要在编程时注意当前打包、解析字段的位置。这种编程方式对程序员能力 提出了较高的要求,而且极容易出错。传统的网络字节打包技术还有一个扩展性不好的问 题,那就是在增加新的网络协议时,需要重新编写打包和解包的代码。因此,这种打包和解 包的方法过于繁琐,在编程模型复杂,协议字段需要经常变更的情况下,使用不便,不能满 足简单、易扩展的要求。
技术实现思路
本专利技术的目的是针对现有的网络字节打包和解包的方法复杂、在编程模型复杂, 协议字段需要经常变更的情况下,使用不便,不能满足简单、易扩展要求的问题,提出一种 解决复杂网络编程的用于网络字节打包和解包的协议数据单元PDU实现方法。 本专利技术的技术方案是 —种用于网络字节打包和解包的协议数据单元PDU实现方法,它包括以下步骤 (a).定义所需传输协议的可扩展标记语言XML字段配置文件,包括传输协议中字 段的顺序、长度和数据类型; (b).打包读取该协议的字段配置文件,获得各个字段的数据类型和数据长度, 然后设置该协议各个字段的java基本类型数值,依次读取该协议的所有字段 若该字段是java基本类型,将该字段的java基本类型数值转换为字节数据;若该 字段是子包类型,读取子包的所有字段,依次打包成字节数据;遍历该协议的所有字段,得 到最终的字节数组; (c).解包获得需要解包的字节数组,根据预先读入的协议字段配置文件,取得 一个单一字段的数据长度 若该字段是的java基本数据类型,将字节数据转换为预定义的java基本数据类 型;若该字段的类型是子包类型,依次解析该子包的所有字段,得到java基本数据类型;遍 历该协议的所有字段,依次解析得到java基本数据类型。 本专利技术的有益效果 本专利技术解决了传统网络编程中存在的编程模型复杂,协议字段变更不便的问题,提供一种简单、易扩展的网络字节流打包、解包方法。 本专利技术提高网络字节流编程的效率,使得网络字节打包、解包变得简单;屏蔽了高 低位字节的差异,提供良好的调试信息及提供了统一的流量监控。附图说明 图1是本专利技术的PDU实现方法中各个对象中的关系示意图。 具体实施例方式下面结合附图和实施例对本专利技术作进一步的说明。 通过XML配置文件来定义协议中字段的顺序、长度、数据类型。屏蔽原始数据类型 的复杂读写,将其自动转换为可理解的基本数据类型,实现高低位字节序随意转换,可以适 应灵活的协议配置。 如图一所示,说明了PDU实现方法中各个对象中的关系,相关名词说明如下 协议对象(Protocol):由1个或多个PDU对象组成的一个字节流抽象,可以表示 一个完整协议,比如匪L协议,SMPP协议 子包(PduBean):为了更明晰的组织协议对象,或者重用协议定义,可以使用子包 的形式来组织协议字段 协议字段对象(PduField):不可再分的PDU对象,表示一个原子的字段定义 PDU :接口定义,协议对象、子包、协议字段都实现IPdu接口,这样可以实现这样对 象之间的自包含,可认为是组件模式的一种实现。 具体实施时 以一个匪L协议的实现为例说明如何使用网络打包、解包技术实现协议的定义、 开发。—、如协议中要求的字节如下表所示 消息开校验操作事务头会话头消息头消息长消息开始标志和信息度始标志 二、定义协议配置文件如下 〈? xml version =〃 1.0〃 encoding =' 〈zsmart> 〈protocol> 〈bufferDefine name = 〃亂> 〈! 一定义主消息体一〉 〈buffer id = 〃 MML_REQ =〃 MsgBeginFlag type = 〃 5〃消息发送顺序 UTF-8 7 >seq =〃 1〃 fieldname4 length =〃 4〃 defaultValue = 〃 ' SC〃 ' comments =〃消息开始标志/> 〈buffer id = 〃 MML_REQ〃 seq = 〃 2〃 fieldname = 〃 TotalLen type=5 length =〃 4〃 defaultValue = 〃 0000〃 comments =〃总长度字段/> 〈buffer id = 〃 MML_REQ〃 seq = 〃 3〃 field謹e = 〃 msgHeader type=0 length =〃 4〃 defaultValue = 〃 〃 comments =〃消息头,子包〃 /> 〈buffer id = 〃匪L—REQ 〃 seq = 〃 4 〃 fieldname = 〃 MML_SessionHeader头,子包头,子包 =5 =5 =5 =5 type=〃 0〃 length =〃 4〃 defaultValue = 〃 ' SC〃 ' comments =〃会话7 /〉〈buffer id = 〃 MML_REQ〃 seq = 〃 5〃 field謹e = 〃 MML_transHeader〃 type=〃 0〃 length =〃 4〃 defaultValue = 〃 ' SC〃 ' comments =〃事务7 /〉〈buffer id=〃 MML_REQ〃 seq = 〃 6〃 fieldname = 〃 MML_CMD〃 typelength =〃 0〃 defaultValue = 〃 〃 comments = 〃匪L指令/>〈buffer id=〃 MML—REQ seq = 〃 7〃 fieldname = 〃 Checksum typelength =〃 8〃 defaultValue = 〃 9B94EDA4 comments = 〃校验和/> 〈! 一定义消息头子包一〉〈buffer id = 〃 msgHeader seq = 〃 1〃 fieldname =〃 version typelength =〃 4〃 defaultValue = 〃 1.00〃 comments =〃版本号〃 />〈buffer id = 〃 msgHeader seq = 〃 2〃 fieldname =〃 endFlag typelength =〃 8〃 defaultValue = 〃 JS123456 〈buffer id =〃 msgHeader 〃 =〃 serviceName 〃 type = 〃 5〃 length =〃 本文档来自技高网...

【技术保护点】
一种用于网络字节打包和解包的协议数据单元PDU实现方法,其特征是它包括以下步骤:    (a).定义所需传输协议的可扩展标记语言XML字段配置文件,包括传输协议中字段的顺序、长度和数据类型;    (b).打包:读取该协议的字段配置文件,获得各个字段的数据类型和数据长度,然后设置该协议各个字段的java基本类型数值,依次读取该协议的所有字段:    若该字段是java基本类型,将该字段的java基本类型数值转换为字节数据;若该字段是子包类型,读取子包的所有字段,依次打包成字节数据;遍历该协议的所有字段,得到最终的字节数组;    (c).解包:获得需要解包的字节数组,根据预先读入的协议字段配置文件,取得一个单一字段的数据长度:    若该字段是的java基本数据类型,将字节数据转换为预定义的java基本数据类型;若该字段的类型是子包类型,依次解析该子包的所有字段,得到java基本数据类型;遍历该协议的所有字段,依次解析得到java基本数据类型。

【技术特征摘要】
一种用于网络字节打包和解包的协议数据单元PDU实现方法,其特征是它包括以下步骤(a).定义所需传输协议的可扩展标记语言XML字段配置文件,包括传输协议中字段的顺序、长度和数据类型;(b).打包读取该协议的字段配置文件,获得各个字段的数据类型和数据长度,然后设置该协议各个字段的java基本类型数值,依次读取该协议的所有字段若该字段是java基本类型,将该字段的java基本类型数值转换为字节数据;若该字...

【专利技术属性】
技术研发人员:杨学书
申请(专利权)人:南京中兴软创科技股份有限公司
类型:发明
国别省市:84[中国|南京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1