java netty消息编码器/解码器无响应

时间:2018-05-06 12:02:24

标签: java netty encoder decoder

我是netty的新手,我正在尝试编写一个简单的聊天客户端/服务器应用程序。如果我使用默认的字符串编码器/解码器,那么一切正常,但是当我试图编写自己的编码器/解码器时,它似乎并没有在编码后将其发送到服务器。为简单起见,我现在尝试只发送一个常数。

继承编码器:

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;


public class ChatEncoder extends MessageToByteEncoder {

@Override
protected void encode(ChannelHandlerContext chc, Object msg, ByteBuf out) throws Exception {
     System.out.println("ENCODE BEFORE");
     out.writeInt(2);
     System.out.println("ENCODE AFTER");
  }

}

继承人解读:

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import java.util.List;


public class ChatDecoder extends ByteToMessageDecoder {

@Override
protected void decode(ChannelHandlerContext chc, ByteBuf in, List<Object> out) throws Exception {
    System.out.println("DECODE BEFORE");
    out.add(in.readBytes(4));
     System.out.println("DECODE AFTER");
  }

}

如果我用于管道解码器/编码器这些,那么它不工作。如果我使用字符串编码器/解码器,它可以很好地工作:

    pipeline.addLast("decoder", new ChatDecoder()); //StringEncoder()
    pipeline.addLast("encoder", new ChatEncoder()); //StringDecoder()

我得到了#34; ENCODE BEFORE&#34; &#34;编码&#34;编码&#34;消息,但不是&#34; DECODE BEFORE&#34;一。

我做错了什么?

0 个答案:

没有答案