现在我正在实现UDP服务器来使用netty库收集sflow数据报。关于netty中的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选中),网状只读取大约700字节,这可以通过ChannelBuffer类型的大小从待检查的数据报的,频道缓冲器。
但是,我使用java.net。*库(如DatagramSocket.class和DatagramPacket.class),它正确接收sflow数据报(约1300字节)。
有人可以帮助我吗?由于这个原因,我无法正确解析sflow数据报。
谢谢。