我正在研究Apache PLC4X项目,我们在其中使用Netty实现行业PLC协议。当前,只要响应大小超过512字节的限制,我们就会遇到解码问题。
一旦响应的大小超过了这512个字节,我们基于MessageToMessageCodec的协议层实现的解码方法将仅接收512字节大的ByteBuf。之后,该方法将与其余数据包一起再次调用。
如何正确处理此问题?
答案 0 :(得分:2)
您应在此处使用ByteToMessageDecoder
,这将允许您buffer
数据。有关如何将其归档的更多详细信息,请参见javadocs。但基本上它是这样的:
YourDecoder extends ByteToMessageDecoder {
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) {
if (in.readableBytes() < 1024) {
return;
}
....
}
}