请给我建议如何增加我的ByteBuf初始容量。
在情状:ByteBuf初始容量大小
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
byte[] byteinput = new byte[in.readableBytes()];
in.readBytes(byteinput);
//further handling...
}
如果收入比信息的ByteBuf最大容量更多 - 我得到的数据板缺。它对这个项目获得完整的,非分块的信息至关重要。
我想我需要在Bootstraps的childOptions或者ChannelInitializer的cannel.config()里面设置ByteBuf的初始容量。
,我尝试不同的方式,如设置
ch.config().setReceiveBufferSize(1024)
,但我仍然有能力ByteBuf(例如496)相同的值。
UPD
我发现我的协议流量使用Wireshark,并包达1,4k从我的测试用户的客户端会两袖清风出来英寸这个问题只是netty设置的问题。操作系统套接字缓冲区不会剪切消息。
“接收缓冲区大小”是内核中套接字接收缓冲区的大小。与Netty,NIO或Java无关。 – EJP 2014-10-31 04:49:59
这是真的。但是对于我现在的机器来说,输入套接字缓冲区至少是8k。我的消息削减为498字节。当我查看ByteBuf实例字段时,我看到“(max)capacity = 498”。我需要找到这个ByneBuf的工厂或初始设置,并改变它的初始容量。 林不想发送1MB在一块,我只需要1k – Asprelis 2014-10-31 08:45:52