1
得到完整的信息
我的代码是这样的服务器端的处理程序类网状:如何从客户端
package nettyechoserver;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerAdapter;
import io.netty.channel.ChannelHandlerContext;
import io.netty.util.ReferenceCountUtil;
/**
* Handler implementation for the echo server.
*/
@Sharable
public class EchoServerHandler extends ChannelHandlerAdapter {
int i = 0;
ByteBuf in = null;
byte[] inByteBuf=new byte[78231];
@Override
public void handlerAdded(ChannelHandlerContext ctx) {
in = ctx.alloc().buffer(4); // (1)
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
in = (ByteBuf) msg;
try {
while (in.isReadable()) { // (1)
inByteBuf[i] = in.readByte();
System.out.flush();
i++;
}
} finally {
ReferenceCountUtil.release(msg); // (2)
}
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
final ByteBuf time = ctx.alloc().buffer(4);
System.out.println("total read: " + i);
String s = "Message Received";
time.writeBytes(s.getBytes());
final ChannelFuture f = ctx.writeAndFlush(time); // (3)
f.addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) {
assert f == future;
ctx.close();
}
});
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
// Close the connection when an exception is raised.
cause.printStackTrace();
ctx.close();
}
}
现在的问题是,我在字节形式和总的接收到的数据大小发送76个KB数据16 kb只有其他数据每次都会丢失 任何人都可以帮助我接收我的整个数据我正在等待您的答案