发明名称 |
一种传输控制协议粘包处理方法及装置 |
摘要 |
本申请提供一种传输控制协议TCP粘包处理方法及装置。一种TCP粘包处理方法包括:接收TCP消息,所述TCP消息包括消息头和消息体,所述消息体用于携带数据,所述消息头用于记录一条完整数据的数据长度;从所述TCP消息中获取消息头,并读取所述消息头记录的数据长度;根据所述数据长度从接收缓冲区中提取完整数据。因此接收端的接收缓冲区中出现粘包现象后,可以依据记录一条完整数据的数据长度从接收缓冲区中提取一个完整数据,解决了接收端不能从粘连的数据包中提取完整数据的问题。 |
申请公布号 |
CN102984253B |
申请公布日期 |
2015.10.14 |
申请号 |
CN201210491483.0 |
申请日期 |
2012.11.27 |
申请人 |
山东中创软件工程股份有限公司;山东中创软件商用中间件股份有限公司 |
发明人 |
王健;车帅;刘民;温尚卓;张辉 |
分类号 |
H04L29/08(2006.01)I |
主分类号 |
H04L29/08(2006.01)I |
代理机构 |
北京集佳知识产权代理有限公司 11227 |
代理人 |
王宝筠 |
主权项 |
一种传输控制协议TCP粘包处理方法,其特征在于,包括:接收TCP消息,所述TCP消息包括消息头和消息体,所述消息体用于携带数据,所述消息头用于记录一条完整数据的数据长度;从所述TCP消息中获取消息头,并读取所述消息头记录的数据长度;根据所述数据长度从接收缓冲区中提取完整数据;根据所述数据长度从接收缓冲区中提取完整数据包括:在当前待处理数据流长度等于所述数据长度的情况下,根据所述数据长度从接收缓冲区中提取完整数据,返回执行接收TCP消息,以接收下一个TCP消息;在当前待处理数据流长度大于所述数据长度的情况下,根据所述数据长度从接收缓冲区中提取完整数据,并且将提取完整数据后接收缓冲区中剩余的待处理数据流长度作为当前待处理数据流长度;在该当前待处理数据流长度不小于预设消息头长度的情况下,执行从所述TCP消息中获取消息头,并读取消息头记录的数据长度,该TCP消息为接收缓冲区中当前待处理数据流所包括的TCP消息;在该当前待处理数据流长度小于预设消息头长度的情况下,返回执行接收TCP消息,以接收下一个TCP消息;所述消息头还用于记录消息编号,所述消息编号按照TCP客户端对TCP消息进行消息头添加处理的顺序获得;比较所述数据长度和接收缓冲区中当前待处理数据流长度包括按照所述消息头编号依次比较所述数据消息长度和接收缓冲区中当前待处理数据流长度。 |
地址 |
250014 山东省济南市历下区千佛山东路41-1号 |