3

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

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

如何处理这个问题的正确方法?

4

1 回答 1

3

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

YourDecoder extends ByteToMessageDecoder {
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) {
        if (in.readableBytes() < 1024) {
            return;
        }
        ....
    }
}
于 2018-11-29T08:36:38.987 回答