[发明专利]一种避免数据粘包的处理装置及方法无效
申请号: | 201110269231.9 | 申请日: | 2011-09-13 |
公开(公告)号: | CN102325010A | 公开(公告)日: | 2012-01-18 |
发明(设计)人: | 张道伟;刘正伟;文中领 | 申请(专利权)人: | 浪潮(北京)电子信息产业有限公司 |
主分类号: | H04L1/00 | 分类号: | H04L1/00;G06F12/08 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 栗若木;王漪 |
地址: | 100085 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 避免 数据 处理 装置 方法 | ||
技术领域
本发明涉及计算机应用领域中数据传输技术,尤其涉及避免数据传输过程中出现数据粘包的处理装置及方法。
背景技术
随着计算机和通讯技术的不断发展,计算机与通讯线路及设备结合起来实现人与计算机、计算机与计算机(M2M,Machine-to-Machine)之间的数据通讯,不仅使各用户计算机的利用率大大提高,而且极大地扩展了计算机的应用范围,并可使各用户实现计算机软硬件资源与数据资源的共享。对计算机的远距离实时控制和对数据的远距离收集等工作,也都可以利用数据通讯来实现。
在数据通讯的过程中,由于通道的阻塞等多方面的原因都会出现接收数据粘包的现象。粘包是指发送方发送的若干包数据,到接收方接收时被粘成一个包。通常,数据粘包的情况有两种,一种是粘在一起的数据包都是完整的数据包,另一种情况是粘在一起的数据包中有不完整的数据包。
以往针对数据粘包的解决方法一般采用短连接的方式,该方式适合单条数据的交互,并且该方式会使得通讯效率降低。当在一去多回的数据交互方式下出现数据粘包现象时,通常用该方式会放弃一些数据。因此,该方式在串口通讯和有线通讯上尚可使用,但在无线通讯这种按流量计费的方式下则无法使用。
综上所述可知,需要一种既能使用在无线通讯上节约成本同时又能提高通讯效率的避免数据粘包的处理方法。
发明内容
本发明所要解决的技术问题是提供一种处理数据粘包的方法及装置,能够保证数据完整性并方便地应用在无线通讯上。
为了解决上述技术问题,本发明提供了一种避免数据粘包的处理装置,包括数据接收模块、缓存模块以及数据提取模块,其中:
数据接收模块,用于在缓存模块的数据写锁打开时,将接收的数据写入缓存模块的空闲空间内,并控制数据读锁打开;
缓存模块,用于内置互斥的数据写锁和所述数据读锁,并向数据接收模块提供缓存数据的缓存空间;
数据提取模块,用于在缓存模块的数据读锁打开时,从缓存模块的缓存数据空间提取完整的数据,并控制数据写锁打开。
进一步地,
缓存模块提供的缓存空间,至少要能保存数据传输协议所规定的最大数据长度的4至8条数据。
进一步地,
数据接收模块在向缓存模块写入数据时,根据数据传输协议的固定位置获取接收数据的长度信息,根据该长度信息从由第一标识标记的空闲空间的起始地址开始写入接收的全部数据,并将该第一标识置为写入接收的全部数据的下一位地址;
数据提取模块在从缓存模块提取数据时,根据接收数据的长度信息从由第二标识标记的缓存数据空间的起始地址开始提取完整的数据,并将该第二标识置为提取完整的数据的下一位地址。
进一步地,
数据接收模块在缓存模块从由第一标识标记的起始地址开始到缓存结尾的空闲空间不足以写入接收的全部数据时,根据数据的长度信息先从由第一标识标记的起始地址开始写入数据,并将剩余的数据写入到缓存模块起始的空闲空间,然后将第一标识更新为写入接收的全部数据的下一位地址;
数据提取模块在缓存模块从由第二标识标记的起始地址开始到缓存结尾的缓存数据空间不足以提取完整的数据时,根据数据的长度信息先从由第二标识标记的起始地址开始提取数据,并将剩余的缓存数据从缓存模块起始的缓存数据空间中提取,然后将第二标识更新为提取完整的数据的下一位地址。
为了解决上述技术问题,本发明提供了一种避免数据粘包的处理方法,涉及数据接收线程和数据提取线程,该方法包括:
数据接收线程在缓存的数据写锁打开时,将接收的数据写入缓存的空闲空间内,并控制数据读锁打开;和/或数据提取线程在缓存的数据读锁打开时,从缓存的数据空间提取完整的数据,并控制数据写锁打开。
进一步地,缓存提供的缓存空间,至少要能保存数据传输协议所规定的最大数据长度的4至8条数据。
进一步地,数据接收流程将接收的全部据写入缓存的空闲空间内,具体包括:
根据数据传输协议的固定位置获取接收数据的长度信息,根据该长度信息从由第一标识标记的空闲空间的起始地址开始写入接收的全部数据,并将该第一标识置为写入接收的全部数据的下一位地址。
进一步地,数据提取线程从缓存的数据空间提取完整的数据,具体包括:
根据接收数据的长度信息从由第二标识标记的缓存数据空间的起始地址开始提取完整的数据,并将该第二标识置为提取完整的数据的下一位地址。
进一步地,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮(北京)电子信息产业有限公司,未经浪潮(北京)电子信息产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110269231.9/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置