[发明专利]一种传输控制协议粘包处理方法及装置有效
| 申请号: | 201210491483.0 | 申请日: | 2012-11-27 |
| 公开(公告)号: | CN102984253A | 公开(公告)日: | 2013-03-20 |
| 发明(设计)人: | 王健;车帅;刘民;温尚卓;张辉 | 申请(专利权)人: | 山东中创软件工程股份有限公司;山东中创软件商用中间件股份有限公司 |
| 主分类号: | H04L29/08 | 分类号: | H04L29/08 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
| 地址: | 250014 山东省*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 传输 控制 协议 处理 方法 装置 | ||
1.一种传输控制协议TCP粘包处理方法,其特征在于,包括:
接收TCP消息,所述TCP消息包括消息头和消息体,所述消息体用于携带数据,所述消息头用于记录一条完整数据的数据长度;
从所述TCP消息中获取消息头,并读取所述消息头记录的数据长度;
根据所述数据长度从接收缓冲区中提取完整数据。
2.根据权利要求1所述的方法,其特征在于,根据所述数据长度从接收缓冲区中提取完整数据包括:
在当前待处理数据流长度等于所述数据长度的情况下,根据所述数据长度从接收缓冲区中提取完整数据,返回执行接收TCP消息,以接收下一个TCP消息;
在当前待处理数据流长度大于所述数据长度的情况下,根据所述数据长度从接收缓冲区中提取完整数据,并且将提取完整数据后接收缓冲区中剩余的待处理数据流长度作为当前待处理数据流长度;
在该当前待处理数据流长度不小于预设消息头长度的情况下,执行从所述TCP消息中获取消息头,并读取消息头记录的数据长度,该TCP消息为接收缓冲区中当前待处理数据流所包括的TCP消息;
在该当前待处理数据流长度小于预设消息头长度的情况下,返回执行接收TCP消息,以接收下一个TCP消息。
3.根据权利要求2所述的方法,其特征在于,还包括:在当前待处理数据流长度小于所述数据长度的情况下,则返回执行接收TCP消息,以接收下一个TCP消息。
4.根据权利要求3所述的方法,其特征在于,在比较结果为当前待处理数据流长度小于所述数据长度时,接收到下一个TCP消息之后还包括:
将所述下一个TCP消息合并到所述接收缓冲区中当前待处理数据流中,并将接收缓冲区中合并后的待处理数据流长度为当前待处理数据流长度,执行比较所述数据长度和接收缓冲区中当前待处理数据流长度,其中,该下一个TCP消息为携带有上一个TCP消息未传完的剩余数据的TCP消息,该数据长度为上一个TCP消息的消息头记录的数据长度;
或者,将所述下一个TCP消息合并到所述接收缓冲区中当前待处理数据流中,并将接收缓冲区中合并后的待处理数据流长度为当前待处理数据流长度,执行比较所述数据长度和接收缓冲区中当前待处理数据流长度,其中,该下一个TCP消息包括消息头和消息体,该消息头用于记录该下一个TCP消息所对应的完整数据的数据长度,该消息体用于携带上一个TCP消息未传完的剩余数据和该下一个TCP消息对应的数据,该数据长度为上一个TCP消息的消息头记录的数据长度。
5.根据权利要求2所述的方法,其特征在于,所述消息头还用于记录消息编号,所述消息编号按照TCP客户端对TCP消息进行消息头添加处理的顺序获得;
比较所述数据长度和接收缓冲区中当前待处理数据流长度包括按照所述消息头编号依次比较所述数据消息长度和接收缓冲区中当前待处理数据流长度。
6.一种TCP粘包处理装置,其特征在于,包括:
接收单元,用于接收TCP消息,所述TCP消息包括消息头和消息体,所述消息体用于携带数据,所述消息头用于记录一条完整数据的数据长度;
获取单元,用于从接收单元接收的TCP消息中获取消息头,并读取所述消息头记录的数据长度;
提取单元,用于根据所述获取单元读取的消息头记录的数据长度从接收缓冲区中提取完整数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东中创软件工程股份有限公司;山东中创软件商用中间件股份有限公司,未经山东中创软件工程股份有限公司;山东中创软件商用中间件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210491483.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:发动机的SCR后处理系统和车辆
- 下一篇:机车柴油机油底壳减压阀安装结构





