数据接收方法技术

技术编号:33293418 阅读:15 留言:0更新日期:2022-05-01 00:17
本发明专利技术涉及数据接收领域,提出一种数据接收方法,包括:基于数据类型配置对应的解析模块,并设置包头解析模板;接收数据并进行特征提取,并判断提取出的数据特征是否可识别,若不可识别则丢弃当前数据并结束,若可识别,则基于包头解析模板解析包头,并根据已解析的包头内容判断数据是否需要组包,若不需要则直接将数据推送至外部,否则根据提取出的数据特征查找对应的解析模块,并基于数据类型调用对应的解析模块解析数据;根据数据头部中的数据标识字段将解析的数据分别存储到不同的缓存;对缓存中的数据地址进行排序;判断是否已完成数据包内容的接收,当完成时对已接收的数据进行组包,并将组包后的数据推送至外部,并销毁缓存。存。存。

【技术实现步骤摘要】
数据接收方法


[0001]本专利技术涉及数据接收领域,特别涉及一种数据接收方法。

技术介绍

[0002]随着不同项目对UDP数据接收的需求,对于网络数据接收的差异性趋势愈专利技术显,对于如何实现网络数据的差异化接收成为迫切需求。既要满足数据接收的差异性,同时要兼顾数据收发性能,并且还需要剥离业务场景,以便适配不同项目中UDP数据和业务紧密相关的部分。
[0003]目前,对于不同场景下的数据接收方案均需分别设计,并且,大多数据接收方案在接收数据时,只能适应一种类型的数据,对于多个数据发送端发送的数据,目前尚未有兼容性较好的方案。

技术实现思路

[0004]本专利技术的目的是提供一种数据接收方法,能够根据不同场景下的不同类型的数据动态自动配置对应的解析模块,并且能够对各种类型的数据进行乱序重排,避免数据混乱。
[0005]本专利技术解决其技术问题,采用的技术方案是:
[0006]数据接收方法,包括如下步骤:
[0007]步骤1.基于数据类型配置对应的解析模块,并设置包头解析模板;
[0008]步骤2.接收数据并进行特征提取,并判断提取出的数据特征是否可识别,若可识别,则进入步骤3,否则丢弃当前数据,并结束;
[0009]步骤3.基于包头解析模板解析包头,并根据已解析的包头内容判断数据是否需要组包,若需要组包,则进入步骤4,否则直接将数据推送至外部;
[0010]步骤4.根据提取出的数据特征查找对应的解析模块,并基于数据类型调用对应的解析模块解析数据;
[0011]步骤5.根据数据头部中的数据标识字段将解析的数据分别存储到不同的缓存;
[0012]步骤6.对缓存中的数据地址进行排序;
[0013]步骤7.判断是否已完成数据包内容的接收,当完成时对已接收的数据进行组包,并将组包后的数据推送至外部,并销毁缓存。
[0014]进一步的是,步骤2中,通过配置的特征字段所在数据的偏移位置和所占字节数进行特征提取。
[0015]进一步的是,步骤2中,若提取出的数据特征不可识别,在丢弃当前数据的同时,进行日志报错。
[0016]进一步的是,步骤3中,所述基于包头解析模板解析包头具体为:
[0017]按包头解析模板的参数设置内容的字段字节数和字段所处的偏移位置对数据包包头携带的信息进行解析,获取数据标识、打包数量、包头长度及当前包号的包头内容。
[0018]进一步的是,步骤3中,所述根据已解析的包头内容判断数据是否需要组包时,当
打包数量和当前包号均等于1时,标识此原始数据包在发送侧未进行拆包处理,并直接将该数据推送至外部。
[0019]进一步的是,步骤4中,所述根据提取出的数据特征查找对应的解析模块时,根据判断出的数据特征,查找对应的解析模块,如果没有,则丢弃数据,进行日志报错,并从代码层面增加当前场景下的解析模块。
[0020]进一步的是,步骤5中,所述根据数据头部中的数据标识字段将解析的数据分别存储到不同的缓存,具体为:
[0021]根据数据标识在数据接收缓存队列搜索,确定此包是否是接收的第一包数据,当是第一包时,需重新分配缓存队列,并将接收数据拷贝至已分配的缓存队列;当不是第一包时,寻找对应的缓存队列,并将接收数据拷贝至对应的缓存队列中。
[0022]进一步的是,步骤6中,所述对缓存中的数据地址进行排序,具体为:
[0023]对于接收到的数据,获取头部字段中的数据标识,找到对应数据标识的有序队列;
[0024]再获取头部字段中的当前序号字段,在有序队列中查找数据,找到比当前序号小的位置,插入数据地址到有序队列;
[0025]如果没有找到,则说明所有数据都比当前数据要小,则将数据地址插入到有序队列尾部。
[0026]进一步的是,步骤7中,所述判断是否已完成数据包内容的接收时,当对应某一数据标识的有序队列中,当缓存的包数小于打包数量时,表示数据未接收完成,继续等待数据接收;当缓存的包数等于打包数量时,表示数据已接收完成。
[0027]进一步的是,步骤7中,所述对已接收的数据进行组包,具体为:基于数据包包头的当前包号字段,将有序队列中的数据依次取出,拼接到缓存中;
[0028]所述拼接过程为:每次拷贝数据前,记录之前已经拷贝数据的长度,按照长度偏移后拷贝数据,同时更新已经拷贝数据长度。
[0029]本专利技术的有益效果是,通过上述数据接收方法,首先,基于数据类型配置对应的解析模块,并设置包头解析模板;其次,接收数据并进行特征提取,并判断提取出的数据特征是否可识别,若不可识别则丢弃当前数据并结束,若可识别,则基于包头解析模板解析包头,并根据已解析的包头内容判断数据是否需要组包,若不需要则直接将数据推送至外部,否则根据提取出的数据特征查找对应的解析模块,并基于数据类型调用对应的解析模块解析数据;然后,根据数据头部中的数据标识字段将解析的数据分别存储到不同的缓存;然后,对缓存中的数据地址进行排序;最后,判断是否已完成数据包内容的接收,当完成时对已接收的数据进行组包,并将组包后的数据推送至外部,并销毁缓存。因此,本专利技术可以接收不同场景下的不同类型的数据,并且,能够根据不同的数据类型自动适配对应的解析模块,当数据流量较大时,也能够及时释放缓存资源,大大提升了数据传输效率。
附图说明
[0030]图1为本专利技术实施例1中数据接收方法的整体流程图;
[0031]图2为本专利技术实施例中数据包具体格式示意图;
[0032]图3为本专利技术实施例中多种数据标识数据接收并存储的示意图;
[0033]图4为本专利技术实施例中组包具体步骤示意图。
具体实施方式
[0034]下面结合附图及实施例,详细描述本专利技术的技术方案。
[0035]实施例
[0036]本实施例以UDP协议数据为例进行详细说明,UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。一般来说,在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重,但是由于UDP的特性,它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
[0037]因此,本实施例提供的一种数据接收方法,其整体流程图见图1,其中,该方法包括如下步骤:
[0038]S1.基于数据类型配置对应的解析模块,并设置包头解析模板。
[0039]本实施例在涉及不同场景的业务需求部分,采用了灵活配置和动态创建的方式灵活适配不同的业务场景。比如:对于数据解析,不同的场景,使用到的数据类型,可能并不相同,这里采用动态创建的形式进行适配不本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.数据接收方法,其特征在于,包括如下步骤:步骤1.基于数据类型配置对应的解析模块,并设置包头解析模板;步骤2.接收数据并进行特征提取,并判断提取出的数据特征是否可识别,若可识别,则进入步骤3,否则丢弃当前数据,并结束;步骤3.基于包头解析模板解析包头,并根据已解析的包头内容判断数据是否需要组包,若需要组包,若需要组包,则进入步骤4,否则直接将数据推送至外部;步骤4.根据提取出的数据特征查找对应的解析模块,并基于数据类型调用对应的解析模块解析数据;步骤5.根据数据头部中的数据标识字段将解析的数据分别存储到不同的缓存;步骤6.对缓存中的数据地址进行排序;步骤7.判断是否已完成数据包内容的接收,当完成时对已接收的数据进行组包,并将组包后的数据推送至外部,并销毁缓存。2.根据权利要求1所述的数据接收方法,其特征在于,步骤2中,通过配置的特征字段所在数据的偏移位置和所占字节数进行特征提取。3.根据权利要求1所述的数据接收方法,其特征在于,步骤2中,若提取出的数据特征不可识别,在丢弃当前数据的同时,进行日志报错。4.根据权利要求1所述的数据接收方法,其特征在于,步骤3中,所述基于包头解析模板解析包头具体为:按包头解析模板的参数设置内容的字段字节数和字段所处的偏移位置对数据包包头携带的信息进行解析,获取数据标识、打包数量、包头长度及当前包号的包头内容。5.根据权利要求4所述的数据接收方法,其特征在于,步骤3中,所述根据已解析的包头内容判断数据是否需要组包时,当打包数量和当前包号均等于1时,标识此原始数据包在发送侧未进行拆包处理,并直接将该数据推送至外部。6.根据权利要求1所述的数据接收方法,其特征在于,步...

【专利技术属性】
技术研发人员:郭耀川王圣川张俊宋前双韩晓博邹泽麟
申请(专利权)人:电信科学技术第五研究所有限公司
类型:发明
国别省市:

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

1