如何读取Netty中的已知字节数

如何读取Netty中的已知字节数,netty,nio,Netty,Nio,我有一个老式的套接字客户端,它通过执行以下操作从服务器读取报告- DataInputStream dis..... int reportlength = dis.readInt(); byte [] repBytes = new byte[reportlength ]; dis.read(repBytes , 0, reportlength ); 我怎样才能在一个烦躁的客户身上做类似的事情 我试图让它在下面的代码中工作,但到目前为止没有成功,因为read和read complete方法被多次

我有一个老式的套接字客户端,它通过执行以下操作从服务器读取报告-

DataInputStream dis.....
int reportlength =  dis.readInt();
byte [] repBytes = new byte[reportlength ];
dis.read(repBytes , 0, reportlength );
我怎样才能在一个烦躁的客户身上做类似的事情

我试图让它在下面的代码中工作,但到目前为止没有成功,因为read和read complete方法被多次调用,我无法取出报告长度部分

class CommunicationHandler extends ChannelInboundHandlerAdapter 
{

public void channelRead(ChannelHandlerContext ctx, Object obj) {
...
}
 public void channelReadComplete(ChannelHandlerContext ctx) {
....
}
}

您可以使用
LengthFieldBasedFrameDecoder
来正确设置入站数据的帧。要了解为什么一条消息会出现多个
channelRead()
事件,请阅读官方用户指南中的“处理流传输”部分: