我需要通过 TCP/IP 从其他 IP(导航设备)接收完整数据包。例如,设备必须定期(超过一分钟)发送 966 个字节。在我的情况下,第一个接收缓冲区的长度为 256 字节(第一个数据包),第二个是 710 字节(最后一个数据包),第三个是完整数据包(966 个字节)。如何手动设置第一个接收缓冲区长度的最小值?
这是我的一段代码:
Executor bossExecutors = Executors.newCachedThreadPool();
Executor workerExecutors = Executors.newCachedThreadPool();
NioServerSocketChannelFactory channelsFactory =
new NioServerSocketChannelFactory(bossExecutors, workerExecutors);
ServerBootstrap bootstrap = new ServerBootstrap(channelsFactory);
ChannelPipelineFactory pipelineFactory = new NettyServerPipelineFactory(this.HWController);
bootstrap.setPipelineFactory(pipelineFactory);
bootstrap.setOption("child.tcpNoDelay", true);
bootstrap.setOption("child.keepAlive", true);
bootstrap.setOption("child.receiveBufferSizePredictorFactory",
new FixedReceiveBufferSizePredictorFactory(2048)
);
bootstrap.bind(new InetSocketAddress(this.port));