[发明专利]数据传输方法及装置有效
申请号: | 202110657449.5 | 申请日: | 2021-06-12 |
公开(公告)号: | CN113364790B | 公开(公告)日: | 2022-10-18 |
发明(设计)人: | 马飞;杨培海 | 申请(专利权)人: | 四川虹美智能科技有限公司 |
主分类号: | H04L69/06 | 分类号: | H04L69/06;H04L69/22 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 李世喆 |
地址: | 621050 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据传输 方法 装置 | ||
本说明书实施例提供一种数据传输方法及装置,该方法包括:对接收到客户端发送来的数据包时,对数据包进行解析,并将在数据包中解析出的数据包本体放入缓存队列中;在缓存队列中取出一个数据包本体,判断数据包本体对应的客户端IP地址字段中的客户端IP地址是否为预设配置集中的客户端IP地址,若是,则对数据包本体进行解析得到数据包本体中的数据流;确定是否已经解析出长度字段;若已经解析出长度字段,则判断在相同客户端IP地址的数据包本体中解析出的数据流的长度之和是否达到长度字段中待传输数据的总长度;若长度之和达到待传输数据的总长度,则接收完成。在发生拆包和粘包时,本申请可以更容易的解析出完整的数据流,减少数据解析的复杂度。
技术领域
本说明书一个或多个实施例涉及网络通信技术领域,尤其涉及一种数据传 输方法及装置。
背景技术
依据现有的TCP传输数据方式,对于无结构、无边界、无长度的字节流数 据的解析比较复杂,经常会出现拆包粘包的问题。例如,数据包M1和数据包 M2正常发送的情况如图1a所示,数据包M1和数据包M2发生粘包的情况如图 1b所示,数据包M1发生拆包的情况如图1c所示,数据包M2发生拆包的情况 如图1d所示。在发生拆包粘包时常常发生不能解析出完整数据流的情况。所以 目前需要一种数据传输方案,即便发生了拆包粘包也能够解析出完整的数据流。
发明内容
为了解决上述全部或者部分问题,本说明书一个或多个实施例描述了一 种数据传输方法及装置。
根据第一方面,提供了一种数据传输方法,包括:
S100、对接收到客户端发送来的数据包时,对所述数据包进行解析,并 将在所述数据包中解析出的数据包本体放入缓存队列中;其中,客户端按照 预设数据格式将待传输数据、待传输数据的总长度、名称和数据类型生成一 个文件对象,所述文件对象中包含长度字段、名称字段、类型字段和主体字 段,所述长度字段用于存储所述待传输数据的总长度,所述名称字段用于存 储所述名称,所述类型字段用于存储所述数据类型,所述主体字段用于存储 所述待传输数据;根据数据包长度限制将所述文件对象划分为多个数据包本体,所有数据包本体的所有字段中的内容构成所述文件对象;在每一个数据 包本体中添加客户端IP地址字段,将添加客户端IP地址字段的各个数据包 本体依次经过数据链路层和物理层的包装后得到数据包,并将各个数据包逐 个发送给服务端;
S200、在所述缓存队列中取出一个数据包本体,判断所述数据包本体对 应的所述客户端IP地址字段中的客户端IP地址是否为预设配置集中的客户 端IP地址,若是,则执行S300;
S300、按照所述预设数据格式对所述数据包本体进行解析得到所述数据 包本体中包含的各个字段中的内容;
S400、根据当前已经解析的相同客户端IP地址的数据包本体,确定是否 已经解析出长度字段;若已经解析出所述长度字段,则判断在相同客户端IP 地址的数据包本体中解析出的主体字段中的数据流的长度之和是否达到所述 长度字段中待传输数据的总长度;
S500、若所述长度之和达到所述待传输数据的总长度,则接收完成;
S600、若所述长度之和小于所述待传输数据的总长度,则在所述缓存队 列中取出下一个相同客户端IP地址的数据包本体,并返回S300。
根据第二方面,提供了一种数据传输装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川虹美智能科技有限公司,未经四川虹美智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110657449.5/2.html,转载请声明来源钻瓜专利网。