网络编程-粘包

粘包问题的产生

  TCP流式协议

    基于数据流的协议

  接收方产生粘包问题

    1.接收方不清楚数据有多长只接收了数据的一部分

    2.接收方多读取了数据

  发送方产生的粘包问题

    操作系统没有及时发送前一次的数据,导致两次数据粘在一起

  粘包问题的根本原因是接收方不清楚数据的长度

  TCP nigle 优化机制

    如果多次发送数据的数据量小并且时间间隔短,会把这一堆数据集在一起一次性发送,目的是为了降低网络传输次数

解决粘包

  核心思路是先通知接收方,要发送的数据的长度,在发送真实的数据

  

UDP

  基于数据报的传输协议,不会发生粘包问题

  因为数据是以报文的形式存在,每次发送都是以数据报的形式

  对方接收的也是一个个数据包

struct模块

  将一个数据处理成固定长度的二进制

原文地址:https://www.cnblogs.com/LinChengcheng/p/10458341.html