怎么解决拆包和粘包?

分包机制一般有两个通用的解决方法:

  1. 特殊字符控制;

  2. 在包头首都添加数据包的长度。

如果使用 netty 的话,就有专门的编码器和解码器解决拆包和粘包问题了。

tips:UDP 没有粘包问题,但是有丢包和乱序。不完整的包是不会有的,收到的都是完全正确的包。传送的数据单位协议是 UDP 报文或用户数据报,发送的时候既不合并,也不拆分。

发表评论

后才能评论

评论(2)

  • 文峯 普通 2022-06-18 11:25 上午

    发送方关闭Nagle算法,使用TCP_NODELAY选项关闭Nagle功能 2. 发送定长的数据包。 3. 应用层自定义规则 4. 数据包头部加上数据包的长度。

  • 文峯 普通 2022-05-01 7:44 下午

    一般有三种方式分包的方式:

    固定长度的消息;
    特殊字符作为边界;
    自定义消息结构。