netty使用LineBasedFrameDecoder解决TCP粘包/拆包

灰太狼 2022-05-27 04:25 371阅读 0赞

转载自:https://www.cnblogs.com/EnzoDin/p/7922003.html

TCP粘包/拆包

TCP是个”流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题

20180411160801451

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

发表评论

表情:
评论列表 (有 0 条评论,371人围观)

还没有评论,来说两句吧...

相关阅读