网络 --- 3 socket模块 粘包
一 .socket 模块参数及方法
二.缓冲区
三.粘包
1.两种粘包现象
①连续的小包可能会被优化算法给组合到一起进行发送
②第一次如果发送的数据大小2000B接收端一次性接受大小为1024,
这就导致剩下的内容会被下一次recv接收到,导致结果错乱
2.两种解决方案
①方案一:由于双方不知道对方发送数据的长度,导致接收的时候,可能接收不全,
或者多接收另外一次发送的信息内容,所以在发送真实数据之前,要先发送数据的长度,
接收端根据长度来接收后面的真实数据,但是双方有一个交互确认的过程
②方案二:
用 Struct模块 进行打包 一起发送
打包:struct.pack(‘i’,长度)
解包:struct.unpack(‘i’,字节)