tcp粘包拆包
Posted 博客首页
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tcp粘包拆包相关的知识,希望对你有一定的参考价值。
粘包、拆包发生原因:
发生TCP粘包或拆包有很多原因,现列出常见的几点,可能不全面,欢迎补充,
1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。
2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。
3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。
4、接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。
现在假设客户端向服务端连续发送了两个数据包,用packet1和packet2来表示,那么服务端收到的数据可以分为三种,现列举如下:
normal:
粘包
拆包
解决方式 : 自定义协议 添加头部 定义内容长度
以上是关于tcp粘包拆包的主要内容,如果未能解决你的问题,请参考以下文章