gpt4 book ai didi

java - Netty UDP 兼容解码器

转载 作者:行者123 更新时间:2023-12-01 14:12:27 25 4
gpt4 key购买 nike

哪些解码器可以安全地扩展与非阻塞数据报 channel 的使用?本质上,我需要从 *ByteBuff 到 String,然后我有代码将该字符串转换为对象。此外,这需要通过解码器来完成。从对象到字符串,最后回到 *ByteBuff。

我尝试扩展 ByteToMessageDecoder,但 Netty 似乎从不调用解码方法。所以我不确定这主要是数据报 channel 的问题还是我对解码器原理理解的问题......

以防万一,这是我的一些代码

初始化器:

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();
// [...]
}

}

最佳答案

要处理 DatagramPacket,您需要使用 MessageToMessageDecoder,因为 ByteToMessageDecoder 仅适用于 ByteBuf。

关于java - Netty UDP 兼容解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com