Eer*_*nen 5 java udp datagram netty
我已将"receiveBufferSize"选项设置为1024,但由于某种原因,我仍然只在messageReceived中获得768个字节.数据的标题指示正在发送的数据的大小是1004.
以下是服务器的初始化代码:
public static void main(String[] args) throws Exception {
ConnectionlessBootstrap b = new ConnectionlessBootstrap(new NioDatagramChannelFactory());
// Options for a new channel
b.setOption("receiveBufferSize", 1024);
System.out.println(b.getOptions());
b.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(
new MyUDPPacketDecoder(),
new StdOutPrintHandler());
}
});
b.bind(new InetSocketAddress(myPort));
}
Run Code Online (Sandbox Code Playgroud)
小智 9
您需要设置一个附加选项 - receiveBufferSizePredictorFactory.
为了预测为了保存传入消息需要分配多少空间,netty使用预测器来预测要分配的字节数.
有两种类型的接收缓冲区大小预测器,自适应和固定大小.预测变量由预测器工厂创建,该工厂为引导程序创建的每个通道创建一个.
如果没有为引导程序设置预测器工厂(或者没有为通道手动设置预测器),则通道使用默认的768字节固定大小预测器.所有大于768字节的消息都会减少到那个大小.
你可以加:
b.setOption("receiveBufferSizePredictorFactory", new FixedReceiveBufferSizePredictorFactory(1024));
Run Code Online (Sandbox Code Playgroud)
您可以在netty文档中阅读有关预测变量及其工厂的信息
ReceiveBufferSizePredictor Inteface
ReceiveBufferSizePredictorFactory Inteface
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |