网络 --- 3 socket模块 粘包

一 .socket 模块参数及方法

 

 

二.缓冲区

 

三.粘包

  1.两种粘包现象

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

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

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

 

  2.两种解决方案

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

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

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

  ②方案二:

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

 

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

 

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

 

  

 

posted @ 2019-01-04 14:56  TNTsc  阅读(116)  评论(0编辑  收藏  举报