【问题标题】:Netty MessageToMessageCodec decode method receives only 512byte chunk of large responseNetty MessageToMessageCodec 解码方法只接收到 512byte 的大响应块
【发布时间】:2018-11-29 08:26:30
【问题描述】:

我正在从事 Apache PLC4X 项目,我们使用 Netty 实现工业 PLC 协议。一旦响应的大小超过 512 字节的限制,我们目前就会遇到解码响应的问题。

一旦响应的大小超过这 512 字节,我们基于 MessageToMessageCodec 的协议层实现的 decode 方法只接收一个 512 字节的大 ByteBuf。紧接着,该方法与数据包的其余部分一起再次调用。

如何正确处理这个问题?

【问题讨论】:

    标签: netty chunked apache-plc4x


    【解决方案1】:

    您应该在此处使用ByteToMessageDecoder,这将允许您使用buffer 数据。有关如何存档的更多详细信息,请参阅 javadocs。但基本上它是这样的:

    YourDecoder extends ByteToMessageDecoder {
        @Override
        protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) {
            if (in.readableBytes() < 1024) {
                return;
            }
            ....
        }
    }
    

    【讨论】:

    • 非常感谢您提供这些信息……您绝对让我开心!工作就像一个魅力,调整最低协议层非常容易。
    猜你喜欢
    • 2019-04-02
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    相关资源
    最近更新 更多