TimeServer.java
TimeClient.java
输出:
服务端:
客户端:
总结:
LineBasedFrameDecoder 的工作原理是它一次遍历 ByteBuf 中的可读字节,判断看是否有"\n" 或者"\r\n",如果有,
就以此位置为结束位置,从可读索引到结束位置区间的字节就组成了一行。它是以换行符为结束标志的解码器,支持
携带结束符或者不携带结束符两种解码方式,同时支持配置单行的最大长度。如果连续读取到最大长度后仍然没有
发现换行符,就会抛出异常,同时忽略掉之前读到的异常码流。
StringDecoder 的功能非常简单,就是将接收到的对象转换成字符串,然后继续调用后面的 handler。LIneBasedFrameDecoder + StringDecoder 组合就是按行切换的文本解码器,它被设计用来支持 TCP 的粘包和拆包。
Netty 提供了多种支持 TCP 粘包/拆包的解码器,满足用户的不通诉求。
本文实例如果发送多次消息而不使用 LineBasedFrameDecoder 则允许结果和逾期不一致(发送了未处理的粘包拆包问题)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于