0

ノンブロッキング データグラム チャネルで安全に拡張できるデコーダはどれですか? 基本的に、*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();    
        // [...]
    }

}
4

1 に答える 1