粘包
多个数据包被连续存储于连续的缓存中,在对数据包进行读取时由于无法确定发生方的发送边界,而采用某一估测值大小来进行数据读出
粘包的本质
粘包问题的本质就是数据读取边界错误所致
网络通信程序中,由于实际业务的要求, 有时是发送几个字节的包, 有时时发送几千字节的包, 发送数据的分包大小无法固定,接收端也就无法固定。所以一般采用一个较为合理的预估值进行轮询接收
解决办法
- 定长发送数据, 弊端是可能需要填充, 浪费带宽
- 尾部做标记, 弊端是标记字符可能和数据里面的字符相同, 引进新的问题
- 头部标记数据长度, 比较通用的做法, 解决了上面两个方法的弊端