https://www.cnblogs.com/williamjie/p/9390164.html
此外:
TCP会发生粘包拆包,UDP则不会。
粘包现象:
接收端收到一个数据包中包含了发送端发送的两个数据包的信息。(主要产生原因是因为接收方不知道消息之间的界限,不知道数据包的大小,不知道一次性应该提前多少个字节的数据)
[Packet1,Packet2]
拆包现象:
接收端收到两个数据包,但这两个数据包可能不完整或者多出一块。
[Packet1-1] . . . . . . . . . . . . . . [Packet1-2,Packet2]
[Packet1,Packet2-1] . . . . . . . [Packet2-2]
如何解决粘包:
https://www.cnblogs.com/cangqinglang/p/11503057.html
1、接收端关闭Nagle算法
(Nagle算法是为了减少广域网的小分组数目,从而减小网络拥塞的出现;)
https://blog.csdn.net/e21105834/article/details/93185784
2、约定数据包长度
3、使用分隔符
4、在每个数据包的开头利用2个或者4个字节填充整个数据包的长度,这样接收端可以先接收2个或者4个字节