首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netty UDP兼容解码器

Netty UDP兼容解码器
EN

Stack Overflow用户
提问于 2013-08-23 08:47:18
回答 1查看 1.9K关注 0票数 0

在使用非阻塞数据报通道时,扩展哪些解码器是安全的?本质上,我需要从*ByteBuff转到String,然后我就有了将该string转换为对象的代码。此外,这也需要用解码器来完成。从object到string,最后返回到*ByteBuff。

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

为了以防万一,下面是我的一些代码

初始化器:

代码语言:javascript
复制
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());
    }

}

我的解码器开始:

代码语言:javascript
复制
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();    
        // [...]
    }

}
EN

回答 1

Stack Overflow用户

发布于 2013-08-26 14:29:14

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18393007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档