ノンブロッキング データグラム チャネルで安全に拡張できるデコーダはどれですか? 基本的に、*ByteBuff から String に移動する必要があり、その文字列をオブジェクトに変換するコードを作成します。また、これはデコーダーで達成する必要があります。オブジェクトから文字列へ、そして最後に *ByteBuff へ。
ByteToMessageDecoder を拡張しようとしましたが、Netty がデコード メソッドを呼び出すことはないようです。したがって、これが主にデータグラム チャネルの問題なのか、それとも私の基本的なデコーダの理解の問題なのかはわかりません...
念のため、ここに私のコードの一部を示します
初期化子:
public class Initializer extends ChannelInitializer<NioDatagramChannel> {
private SimpleChannelInboundHandler<Packet> sipHandler;
public Initializer(SimpleChannelInboundHandler<Packet> handler) {
sipHandler = handler;
}
@Override
protected void initChannel(NioDatagramChannel chan) throws Exception {
ChannelPipeline pipe = chan.pipeline();
pipe.addLast("decoder", new SipDecoder());
pipe.addLast("handler", sipHandler);
pipe.addLast("encoder", new SipEncoder());
}
}
私のデコーダーの始まり:
public class SipDecoder extends ByteToMessageDecoder {
private Packet sip;
@Override
protected void decode(ChannelHandlerContext context, ByteBuf byteBuf, List<Object> objects) throws Exception {
System.out.println("got hit...");
String data = new String(byteBuf.array());
sip = new Packet();
// [...]
}
}