粘包问题:粘的是应用层数据报,导致处理数据的时候,容易堵半个应用层数据报(这是一个凡是面向字节流传输都会遇到的问题)
假设:
在小红的回答中有三个字,这个时候就需要从缓冲区中读取了,但是读的时候一次性读几个数据,这是无法预知的,这就可能会让程序出现歧义(UDP以包为单位,就不存在这样的问题)
那么读取应用层数据就不应该只读半个包,也就是需要通过应用层协议本身来区分包和包的边界,区分方式可以有: 1.使用分隔符:好个p;好个p;… 2.明确包的长度:3 好个p
粘包问题:粘的是应用层数据报,导致处理数据的时候,容易堵半个应用层数据报(这是一个凡是面向字节流传输都会遇到的问题)
假设:
在小红的回答中有三个字,这个时候就需要从缓冲区中读取了,但是读的时候一次性读几个数据,这是无法预知的,这就可能会让程序出现歧义(UDP以包为单位,就不存在这样的问题)
那么读取应用层数据就不应该只读半个包,也就是需要通过应用层协议本身来区分包和包的边界,区分方式可以有: 1.使用分隔符:好个p;好个p;… 2.明确包的长度:3 好个p