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

时间:2014-07-28 21:38:54

标签: netty nio

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

DataInputStream dis.....
int reportlength =  dis.readInt();
byte [] repBytes = new byte[reportlength ];
dis.read(repBytes , 0, reportlength );

我如何在Netty客户端中执行类似操作?

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

class CommunicationHandler extends ChannelInboundHandlerAdapter 
{

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

1 个答案:

答案 0 :(得分:2)

您可以使用LengthFieldBasedFrameDecoder正确构建入站数据。要了解为何您针对单条消息收到多个channelRead()个事件,请阅读“处理流式传输”#39;官方用户指南中的部分:http://netty.io/wiki/user-guide-for-4.x.html#wiki-h3-11