декодирование входных байтов netty 4.0

Я пытаюсь реализовать очень простой сервер сокетов. Мне нужно прочитать несколько сообщений, разделенных новой строкой или любым другим разделителем.

Согласно этой документации: http://netty.io/4.0/api/io/netty/handler/codec/string/StringDecoder.html и http://netty.io/4.0/api/io/netty/handler/codec/DelimiterBasedFrameDecoder.html.

этот код для инициализатора канала

ChannelInitializer<SocketChannel> channelInitializer = new ChannelInitializer<SocketChannel>() {
            @Override
            public void initChannel(SocketChannel ch) throws Exception {

                ch.pipeline().addLast("frameDecoder", new DelimiterBasedFrameDecoder(Delimiters.lineDelimiter()));
                ch.pipeline().addLast("stringDecoder", new StringDecoder(CharsetUtil.UTF_8));

                // Encoder
                ch.pipeline().addLast("stringEncoder", new StringEncoder(CharsetUtil.UTF_8));
            }
         };

должен сделать свое дело.

но нет подходящих конструкторов для любого из декодеров и кодировщиков, которые работали бы с предоставленными параметрами. они ожидают некоторого целого числа в качестве первого параметра и массива байтов. только stringDecoder кажется в порядке.

что мне здесь не хватает?


person bazo    schedule 23.03.2013    source источник
comment
Извините, я не понимаю вопрос и проблему. Не могли бы вы перефразировать?   -  person Norman Maurer    schedule 23.03.2013
comment
Вкратце: примеры использования, взятые из документации, не работают. Это проблема. Вопрос в том, как правильно пользоваться   -  person bazo    schedule 24.03.2013


Ответы (1)


Встроенная документация для netty 4.0 на данный момент устарела, но находится в состоянии альфа / бета / разработки.

Целочисленный параметр вводится для предотвращения неограниченного роста буфера и определяет максимальную длину кадра.

Итак, new LineBasedFrameDecoder(4096)) похож на new DelimiterBasedFrameDecoder(Delimiters.lineDelimiter()).

person systemtrap    schedule 23.03.2013