我正在从事Apache PLC4X项目,在该项目中,我们使用Netty实现了工业可编程控制器协议。目前,当解码响应的大小超过512字节时,我们就遇到了问题。
一旦响应的大小超过这512个字节,我们基于MessageToMessageCodec的协议层实现的解码方法就只接收到一个512个字节的大ByteBuf。在此之后,该方法将与数据包的其余部分一起再次调用。
怎样才能正确地处理这件事?
发布于 2018-11-29 08:36:38
您应该在这里使用ByteToMessageDecoder,这将允许您使用buffer数据。有关如何将其存档的更多细节,请参见javadocs。但基本上是这样的:
YourDecoder extends ByteToMessageDecoder {
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) {
if (in.readableBytes() < 1024) {
return;
}
....
}
}https://stackoverflow.com/questions/53534645
复制相似问题