1.分包
当一个数据过大,大于接收Buffer,我们需要分多次发送,就可能出现多次send()对应一个recv(),这也叫分包。
例如我们要发送"HelloWord",但是是依次发送"Hello"和"World"。
2.粘包
有可能是多个send()对应一个recv(),也可能每次recv()给的缓冲空间比较小,一个send()对应多个recv(),这样我们在收到数据的时候就需要将"分别收到的数据"给合并到一起。
例如我们要将前面收到的"Hello"和"World"给拼接成"HelloWorld"。
一点废话
这里只是告诉自己这里有一个知识点注意,就这个标题可以搜到很多相关知识,例如产生分包和粘包的原因、解决方法等。
自己搜就行,这里只是随便提供两个我看了的链接
TCP以及TCP中的粘包与分包
tcp报文黏连及解决方法
还有一种解决办法就是采用报文长度+报文内容的形式,长度占4个字节,这样发送数据。
具体可以参考视频
分包粘包1
分包粘包2