本发明专利技术提供一种网络报文的处理方法,所述网络报文包括长度不固定的部分报文和长度固定的部分报文;所述网络报文的处理方法包括:定义所述网络报文的格式:对于所述长度不固定的部分报文使用伸缩数组进行定义;定义所述网络报文的数据指针;为所述数据指针开辟空间;在伸缩数组定义的所述长度不固定的部分报文中添加所述长度不固定的部分报文的内容。本发明专利技术一次性的分配空间,不容易造成内存泄漏;并且没有长度不固定报文数据部分的指针定义,不占用空间,发送报文时可以将整个结构体当做报文进行发送,不会像传统方案中在发送时还需要修改后才能发送。
【技术实现步骤摘要】
本专利技术涉及通信
,特别是涉及一种长度不固定的网络报文的处理方法。
技术介绍
随着网络的发展,网络数据流量变得越来越大,网络报文的格式也越来越多,如何高效地处理网络报文成为一个技术问题。目前,处理网络报文最常用的方式是对每一项报文都定义一种数据格式,因为大多数报文的格式是固定的,所以其对应的数据格式也是固定的。 但是,网络报文的格式并不是固定的。现有技术中,对于一些格式不固定的网络报文来讲,很难用固定的数据格式去定义其内容。比如说协助同一个交换网内的交换成员之间分发、传播和注册某种信息(如VLAN、组播地址等)的GVRP(Generic AttributeRegistrat1n Protocol,通用的属性注册协议)协议,其报文格式如图1所示。GVRP网络报文格式由7部分构成:DA (Destinat1n Address,目的地址)、SA (Source Address,源地址)、length (长度)、DSAP (Destinat1n Service Access Point,目的服务访问点)、SSAP(Source Service Access Point,源服务访问点)、Ctrl (控制字段)和 F1DU(ProtocolData Unit,协议数据单元)。这7部分当中,除了 TOU以外,其他部分的长度均为固定的。并且如图所示,PDU部分包括属性部分(Attribute)内容。而属性部分内容的长度是由属性的数量所决定的,其长度是无法确定的。 因此,针对GVRP网络报文数据的常规定义为: U8DA[6]]; U161ength ; U8SA[6]; U8DSAP ; U8SSAP ; U8Ctrl ; U8*PDU;//PDU }GVRP_PKG。 然后,按照如下步骤进行使用: 首先,定义一个网络数据报文指针:GVRP_PKG*gvrp ; 其次,为定义的网络数据报文指针开辟第一空间:gvrp = malloc (sizeof (GVRP_PKG)); 最后,为PDU 部分的指针开辟第二空间:gvrp->PDU = malloc (sizeof (LENGTH))。 从上述定义和使用步骤过程不难看出,如果对包含长度不固定的属性的网络报文数据进行定义,需要分别开辟第一空间和第二空间,与之相对应地,在释放空间时,也必须释放第一空间和第二空间。并且,由于第二空间依赖于第一空间,释放空间时,需要先释放第二空间,再释放第一空间。如果程序员操作不当,不小心先释放了第一空间,则第二空间将永远也无法找回,从而造成了内存的泄漏。并且,对于属性报文数据部分,由于增加了对属性报文指针的定义,即U8*PDU,该指针也会占用4个字节的空间,破坏了报文结构的连续性。
技术实现思路
鉴于以上所述现有技术的缺点,本专利技术的目的在于提供一种网络报文数据的处理方法,用于解决现有技术中对于长度不固定的网络报文数据,其定义时比较复杂且需另外占用空间的问题。 为实现上述目的及其他相关目的,本专利技术提供,所述网络报文包括长度不固定的部分报文和长度固定的部分报文;所述网络报文的处理方法包括:定义所述网络报文的格式:对于所述长度不固定的部分报文使用伸缩数组进行定义;定义所述网络报文的数据指针;为所述数据指针开辟空间;在在所述长度不固定的部分报文的伸缩数组添加所述长度不固定的部分报文的内容。 可选地所述长度不固定的部分报文的伸缩数组不是立即存在的。 可选地,所述空间包括所述长度不固定的部分报文的空间和所述长度固定的部分报文的空间。 可选地,所述长度不固定的部分报文的伸缩数组的元素和元素数量是依据实际需要进行设置的。 可选地,所述网络报文为GVRP协议报文。 可选地,所述GVRP协议报文的长度不固定的部分报文为PDU部分。 如上所述,本专利技术的一种网络报文数据的处理方法,采用伸缩数组对长度不固定部分的网络报文数据进行定义,具有以下有益效果: 1.本专利技术一次性的分配空间,不容易造成内存泄漏; 2.本专利技术没有长度不固定报文数据部分的指针定义,不占用空间,发送报文时可以将整个结构体当做报文进行发送,不会像传统方案中在发送时还需要修改后才能发送。 【附图说明】 图1显示为现有技术中GVRP协议的报文格式的示意图。 图2显示为本专利技术实施例公开的的流程示意图。 元件标号说明 S21 ?S24 步骤 【具体实施方式】 以下通过特定的具体实例说明本专利技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本专利技术的其他优点与功效。本专利技术还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。 请参阅附图。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本专利技术的基本构想,遂图式中仅显示与本专利技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。 实施例1 本实施例公开了一种针对长度不同的网络报文的处理方法,其中长度不同的网络报文包括但不限于GVRP报文。本实施例以图1所示的GVRP报文格式来进行详细说明。 每一个网络报文都会包括DA、SA、length、DSAP, SSAP和Ctrl,这一部分的内容,针对不同的协议,其长度也是固定的,在此,称之为长度固定的部分报文。例如GVRP报文的DA、SA、length、DSAP, SSAP和Ctrl的长度是固定不变的,即,GVRP报文的长度固定的部分报文包括DA、SA、length、DSAP, SSAP和Ctrl。但是,还有一些协议的网络报文还会包括一些包含协议特定属性的内容,这一部分的内容的长度有些是固定的,有些则是不固定的。因此。对于长度不固定的那一部分称之为长度不固定的部分报文,而GVRP的长度不固定的部分报文为PDU部分。 本实施例的网络报文的处理方法,如图2所示,包括: 步骤S21,定义网络报文的格式:对于长度不固定的部分报文使用伸缩数组进行定义: 在本实施例中,对GVRP报文格式的定义如下: Typedef struct{ U8DA[6]]; U8SA[6]; U161ength ; U8DSAP ; U8SSAP ; U8Ctrl ; U8PDU[0] ;//PDU }GVRP_PKG。 其中,GVRP报文格式被定义为GVRP_PKG ;U8PDU[0] ”即为对长度不固定的部分报文的定义,此时,PDU部分的伸缩数组的元素数量为0,其长度也为O。PDU部分被定义为了伸缩数组。伸缩数组是C99具有的新特性,利用这一新特性可以声明最后一个成员是一个具有特殊属性的数组的结构。该数组成员的特殊属性之一是它不立即存在。第二个特殊属性是可以编写适当的代码使用这个伸缩型数组的元素,就像它确实存在并且拥有您需要的任何数目的元素一样。 步骤S22,定义网络报文的数据指针: 对于GVRP报文格式,其数据指针的定义为:GVRP本文档来自技高网...
【技术保护点】
一种网络报文的处理方法,所述网络报文包括长度不固定的部分报文和长度固定的部分报文;其特征在于,所述网络报文的处理方法包括:定义所述网络报文的格式:对于所述长度不固定的部分报文使用伸缩数组进行定义;定义所述网络报文的数据指针;为所述数据指针开辟空间;在所述长度不固定的部分报文的伸缩数组中添加所述长度不固定的部分报文的内容。
【技术特征摘要】
1.一种网络报文的处理方法,所述网络报文包括长度不固定的部分报文和长度固定的部分报文;其特征在于,所述网络报文的处理方法包括: 定义所述网络报文的格式:对于所述长度不固定的部分报文使用伸缩数组进行定义; 定义所述网络报文的数据指针; 为所述数据指针开辟空间; 在所述长度不固定的部分报文的伸缩数组中添加所述长度不固定的部分报文的内容。2.根据权利要求1所述的网络报文的处理方法,其特征在于:所述长度不固定的部分报文的伸缩数组不是立即存在的。3.根...
【专利技术属性】
技术研发人员:张伟,顾知伟,
申请(专利权)人:上海斐讯数据通信技术有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。