[Netty]——分隔符和定长解码器的应用(第五章)
2018-12-12 本文已影响0人
辛德瑞拉Dangerous
DelimiterBasedFrameDecoder 和 FixedLengthFrameDecoder。分别是分隔符消息解码器和定长消息解码器。都能解决TCP底层的数据包的粘包和拆包导致的读半包问题。
代码示例:官方的示例echo
主要内容:
- DelimiterBasedFrameDecoder的服务端和客户端开发;
- FixedLengthFrameDecoder的服务端开发和并通过talent进行测试;
DelimiterBasedFrameDecoder的核心代码(Server和Client都加上这段代码):对特定分隔符的消息进行解码,这里是
$_
,
// DelimiterBasedFrameDecoder
ByteBuf delimiter = Unpooled.copiedBuffer("$_".getBytes());
p.addLast(new DelimiterBasedFrameDecoder(1024, delimiter));
p.addLast(new StringDecoder());
FixedLengthFrameDecoder的核心代码(Server和Client都加上这段代码):只读取固定长度的消息。这里是20
// FixedLengthFrameDecoder
p.addLast(new FixedLengthFrameDecoder(20));
p.addLast(new StringDecoder());