О настройке UDP-сервера в netty

Теперь я внедряю UDP-сервер для сбора дейтаграмм sflow с использованием библиотеки netty.

Вот мои настройки для 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 байт, это можно проверить по размеру буфера канала, дейтаграммы из буфера канала.

Однако я использую библиотеки java.net. *, такие как DatagramSocket.class и DatagramPacket.class, он правильно получает дейтаграмму sflow (около 1300 байт).

Кто-нибудь может мне помочь? Из-за этого я не могу правильно разобрать дейтаграмму sflow.

Спасибо.


person Junho Suh    schedule 13.12.2012    source источник


Ответы (2)


У меня была такая же проблема, попробуйте использовать Oio, а не Nio! (просто измените «nio» на «oio» и «Nio» на «Oio».

http://lists.jboss.org/pipermail/netty-users/2009-June/000891.html

Теперь работает ;)

person Franz Bettag    schedule 15.01.2013

Я не проверял это, но попробуйте, может сработать для вас.

org.jboss.netty.channel.FixedReceiveBufferSizePredictorFactory bufferSizePredictor = new FixedReceiveBufferSizePredictorFactory(1300);// or whatever size you require.
serverBootstrap.setOption("receiveBufferSizePredictorFactory",
            bufferSizePredictor);

Как только вы настроите эту фабрику предикторов, она может помочь.

person Abe    schedule 14.12.2012