粘包问题的产生
TCP流式协议
基于数据流的协议
接收方产生粘包问题
1.接收方不清楚数据有多长只接收了数据的一部分
2.接收方多读取了数据
发送方产生的粘包问题
操作系统没有及时发送前一次的数据,导致两次数据粘在一起
粘包问题的根本原因是接收方不清楚数据的长度
TCP nigle 优化机制
如果多次发送数据的数据量小并且时间间隔短,会把这一堆数据集在一起一次性发送,目的是为了降低网络传输次数
解决粘包
核心思路是先通知接收方,要发送的数据的长度,在发送真实的数据
UDP
基于数据报的传输协议,不会发生粘包问题
因为数据是以报文的形式存在,每次发送都是以数据报的形式
对方接收的也是一个个数据包
struct模块
将一个数据处理成固定长度的二进制