TCP报文分包和粘包

1.分包

当一个数据过大,大于接收Buffer,我们需要分多次发送,就可能出现多次send()对应一个recv(),这也叫分包。

例如我们要发送"HelloWord",但是是依次发送"Hello"和"World"。

2.粘包

有可能是多个send()对应一个recv(),也可能每次recv()给的缓冲空间比较小,一个send()对应多个recv(),这样我们在收到数据的时候就需要将"分别收到的数据"给合并到一起。

例如我们要将前面收到的"Hello"和"World"给拼接成"HelloWorld"。

一点废话

这里只是告诉自己这里有一个知识点注意,就这个标题可以搜到很多相关知识,例如产生分包和粘包的原因、解决方法等。

自己搜就行,这里只是随便提供两个我看了的链接
TCP以及TCP中的粘包与分包
tcp报文黏连及解决方法

还有一种解决办法就是采用报文长度+报文内容的形式,长度占4个字节,这样发送数据。
具体可以参考视频
分包粘包1
分包粘包2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值