StringDecoder和LineBasedFrameDecoder的原理分析

LineBasedFrameDecoder的工作原理是它依次遍历ByteBuf中的可读字节,判断看是否有“\n”或者“\r\n”,如果有就以此位置为结束位置,从可读索引到结束位置区间的字节就组成了一行。它是以换行符为结束标志的解码器,支持携带结束符或者不携带结束符两种解码方式,同时支持配置单行的最大长度。如果连续读取到最大长度后仍然没有发现换行符,就会抛出异常,同时忽略掉之前读取到的异常码流。

StringDecoder就是将接收到的对象转换成字符串,然后继续调用后面的handler ,StringDecoder和LineBasedFrameDecoder的的组合就是按行切换的文本解码器,他被设计用来支持TCP的粘包和拆包。

netty提供了多种支持TCP粘包和拆包的解码器,用来满足用户不同的诉求。

TCP粘包和拆包的讲解URL:

https://blog.csdn.net/wildwolf_001/article/details/81179512

猜你喜欢

转载自blog.csdn.net/wildwolf_001/article/details/81180092