half-packet,顾名思义就是收到了半个包,还不够形成一个应用-此时层包。就像你想对喜欢的人说“我喜欢你”,但是因为喝了水,第一次只说了“我”,第二次说了“嗨”,第三次说了“嗨”.如果说“我喜欢你”,那就是半包问题。只有你说完这4个字,对方才知道你想说“我喜欢你”!以http协议为例,展示半包场景。粘包与半包相反。你可以一口气说出很多你想说的话。对方无法回应。你必须把你的话拆开,一个一个地理解。以http协议为例,展示粘包的场景:http协议是单向的,所以正常场景下不会有粘包,但是在pipeline模式下,允许一方连续发送多个请求,那么为什么会有粘包呢?无数刚接触网络编程的同学,往往认为每次收到的数据只是一个完整的数据包。所以当网络不好或者报文包太大的时候,会出现半包的情况,而程序没有考虑到半包的情况,结果就是解码失败,导致报文丢失。当通信方在一个TCP包中发送多个业务数据包时,会产生粘包,程序不考虑一次TCP接收。一个包会收到多个业务包,所以在解析完第一个业务包后,后面的业务包都会被丢弃。百度一下半包粘包,肯定会查到很多记录,也证明这两款货确实坑了无数人。那么看完这一段,你还会继续犯贴半包的错误吗?详情请参考:https://www.tiocloud.com/doc/tio/84
