現在、nettyライブラリを使用してsflowデータグラムを収集するUDPサーバーを実装しています。
これがudpサーバーの私の設定です。
ChannelFactory factory = new NioDatagramChannelFactory(this.threadPool.getScheduledExecutor());
ConnectionlessBootstrap bootstrap = new ConnectionlessBootstrap(factory);
bootstrap.setPipelineFactory(new ChannelPipelineFactory(){
public ChannelPipeline getPipeline(){
ChannelPipeline lChannelPipeline = Channels.pipeline();
lChannelPipeline.addLast("sflowmessagedecoder", new SflowMessageDecoder());
lChannelPipeline.addLast("handler", new SflowCollectorHandler());
return lChannelPipeline;
}
});
bootstrap.setOption("receiveBufferSize", 65536);
bootstrap.bind(new InetSocketAddress(port));
問題は、sflowデータグラム(長さ約1300バイト、これはwiresharkを使用して確認できます)を受信すると、nettyは約700バイトしか読み取らないことです。これは、チャネルバッファーからのデータグラムのチャネルバッファーのサイズで確認できます。
ただし、DatagramSocket.classやDatagramPacket.classなどのjava.net。*ライブラリを使用すると、sflowデータグラムを正しく受信します(約1300バイト)。
誰かが私を助けることができますか?このため、sflowデータグラムを正しく解析できません。
ありがとう。