网络 --- 3 socket模块 粘包

一 .socket 模块参数及方法

二.缓冲区

三.粘包

  1.两种粘包现象

  ①连续的小包可能会被优化算法给组合到一起进行发送

  ②第一次如果发送的数据大小2000B接收端一次性接受大小为1024,

  这就导致剩下的内容会被下一次recv接收到,导致结果错乱

 

  2.两种解决方案

  ①方案一:由于双方不知道对方发送数据的长度,导致接收的时候,可能接收不全,

  或者多接收另外一次发送的信息内容,所以在发送真实数据之前,要先发送数据的长度,

  接收端根据长度来接收后面的真实数据,但是双方有一个交互确认的过程

  ②方案二:

    用 Struct模块 进行打包 一起发送

    打包:struct.pack(‘i’,长度)

    解包:struct.unpack(‘i’,字节)

  

原文地址:https://www.cnblogs.com/sc-1067178406/p/10219875.html