概述
本文主要概述TCP粘包的原因和如何解决TCP粘包的问题。
TCP粘包原因
由于TCP是字节流传输协议,又没有保护边界,传输过程中为了提高传输效率,其采用了一种优化方式,将发送时间间隔小数据量小的一起存入发送缓存区再发送,由于没有保护边界,故而会出现数据的粘包。
解决TCP粘包
1.传输的时候不让其进行优化,以降低传输效率为代价,但是这种目前我不知该如何操作;
2.在应用层进行数据解析,传输的数据定义的时候定义消息头,消息长度,消息结束标志等,按照消息的格式解析读取的消息。
UDP不会粘包
由于UDP是数据包传输协议,其含有消息保护边界,在发送每一包消息的时候,会进行处理,加上消息头,其次UDP发送数据的时候不使用优化算法来发送,接收端采用链式结构来存储接收的数据包。