假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器一次读取的字节数是不确定的,故可能存在以下4中情况:
- 服务端分两次读到了两个独立的数据包D1和D2,没有粘包和拆包
- 服务端分一次收到两个数据包,D1和D2粘合一起,被称为TCP粘包
- 服务端分两次读取到了两个数据包,第一次完成的D1和D2部分,第二次是D2剩余部分,被称为TCP拆包
- 服务端分两次读到了两个数据包,第一次读到D1的部分内容,第二次是D1剩下的内容和D2全部包,拆包
- 也有可能,D1和D2过大,服务器需要多次接收,多次拆包
TCP粘包和拆包
原文:https://www.cnblogs.com/hongchen01/p/14279402.html