MessageToMessageDecoder
MessageToMessageEncoder
通过下面二个类的相关的功能,分析MessageToMessageCodec
的用法
StringDecoder
StringEncoder
StringDecoder
,StringEncoder
可以再 netty 中进行基于String
类型的数据通信
StringDecoder
把ByteBuf
转化为String
,把接受到的 byte 字节,转化为 StringStringEncoder
把String
转化为ByteBuf
,把String
转化为byte
字节,进行网络的传输
Decodes a received ByteBuf
into a String. Please note that this decoder must be used with a proper ByteToMessageDecoder
such as DelimiterBasedFrameDecoder
or LineBasedFrameDecoder
if you are using a stream-based transport such as TCP/IP. A typical setup for a text-based line protocol in a TCP/IP socket would be:
ChannelPipeline pipeline = ...;
// Decoders
pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(80));
pipeline.addLast("stringDecoder", new StringDecoder(CharsetUtil.UTF_8));
// Encoder
pipeline.addLast("stringEncoder", new StringEncoder(CharsetUtil.UTF_8));
// and then you can use a String instead of a ByteBuf as a message:
void channelRead(ChannelHandlerContext ctx, String msg) {
ch.write("Did you say '" + msg + "'?\n");
}