Netty - Страница 3 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming > Java

Java В данном форуме вы сможете найти много полезной информации по платформе Java. Подробные статьи, исходные коды и конечно учебники как для новичков так и профессиональных Java разработчиков вы найдёте здесь. Если у вас есть вопрос или хотите поделится своими наработками, пожалуйста, делайте это в этой теме.

Ответ
Опции темы
Непрочитано 27.09.2012, 20:56   #21
Супергерой

По умолчанию Re: Netty

Тогда да. Дешифруем и разделяем.
acmi вне форума Отправить сообщение для acmi с помощью ICQ Ответить с цитированием
Непрочитано 28.09.2012, 21:48   #22
Аватар для shocked
Пользователь

По умолчанию Re: Netty

Подскажите что не так делаю. Ниже работающий правильно вариант, но без Lenght decodera.
 
 @Override
    public ChannelPipeline getPipeline() throws Exception {
 
        final ChannelPipeline pipeline = Channels.pipeline();
 
        pipeline.addLast("decoder", new PacketFrameDecoder());
 
        pipeline.addLast("encoder", new PacketFrameEncoder());
 
        pipeline.addLast("executor", getExecutorHandler());
 
        pipeline.addLast("handler", new ClientChannelHandler()); //Client logic
 
        return pipeline;
    }
 
Code: Java
Если его добавить , то не один не отрабатывает, только коннект происходит.
 
public class LengthDecoder extends LengthFieldBasedFrameDecoder {
 
    private static final Logger log = LoggerFactory.getLogger(LengthDecoder.class.getSimpleName());
 
    public LengthDecoder() {
        super(Short.MAX_VALUE, 0, 2);
    }
 
    @Override
    protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception {
        log.info("Lengh Based Decoder, decode()");
 
        log.info(NetUtils.getHexDump(buffer.array()));
 
        return super.decode(ctx, channel, buffer);    //To change body of overridden methods use File | Settings | File Templates.
    }
}
 
Code: Java
Добавлял после первого декодера.
shocked вне форума Ответить с цитированием
Непрочитано 28.09.2012, 23:06   #23
Супергерой

По умолчанию Re: Netty

В декодерах проверь, что они возвращяют. Если null, то нужно разобраться почему.
acmi вне форума Отправить сообщение для acmi с помощью ICQ Ответить с цитированием
Непрочитано 28.09.2012, 23:13   #24
Аватар для shocked
Пользователь

По умолчанию Re: Netty

У них метод decode() даже не вызывается , если добавить этот LenghtDecoder
shocked вне форума Ответить с цитированием
Непрочитано 28.09.2012, 23:16   #25
Супергерой

По умолчанию Re: Netty

А сам LenghtDecoder не null возвращает?
acmi вне форума Отправить сообщение для acmi с помощью ICQ Ответить с цитированием
Непрочитано 28.09.2012, 23:24   #26
Аватар для shocked
Пользователь

По умолчанию Re: Netty

Не вызывается вообще, и не возвращает ничего ) В pipeline важен же порядок, в каком добавлять ? Если там один pipeline.addLast("decoder", new PacketFrameDecoder());, то все хорошо работает, если после него еще один pipeline.addLast("Lenghtdecoder", new LengthDecoder());, то ни один из них не вызывается
На русском статей кроме хабра нету больше информации по netty ?

Последний раз редактировалось shocked; 28.09.2012 в 23:42. Причина: +
shocked вне форума Ответить с цитированием
Непрочитано 28.09.2012, 23:53   #27
Супергерой

По умолчанию Re: Netty

У меня все обработчики в таком же порядке, и все работает. Могу лишь посоветовать попробовать поменять местами или начать добавлять с минимума.
Единственная проблема с LengthFieldBasedFrameDecoder`ом у меня была из-за того, что я не указал в Bootstrap`e, что нужно создавать буферы с порядком байт little endian.
acmi вне форума Отправить сообщение для acmi с помощью ICQ Ответить с цитированием
Сказали спасибо:
Непрочитано 29.09.2012, 00:10   #28
Аватар для shocked
Пользователь

По умолчанию Re: Netty

ChannelBuffer обработанный должен идти дальше по обработчикам в порядке, который указан так ?
shocked вне форума Ответить с цитированием
Непрочитано 29.09.2012, 00:17   #29
Супергерой

По умолчанию Re: Netty

Так) Только не обязательно ChannelBuffer, сигнатура метода protected Object decode(... Можете что угодно передавать, главное чтобы дальше этот объект правильно обработали.
acmi вне форума Отправить сообщение для acmi с помощью ICQ Ответить с цитированием
Непрочитано 29.09.2012, 00:34   #30
Аватар для shocked
Пользователь

По умолчанию Re: Netty

А как в Bootstrape сделать littleEndian ?, а то я в декодере возвращаю
return ChannelBuffers.wrappedBuffer(ByteOrder.LITTLE_ENDIAN, allData);
Code: Java
shocked вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Netcore Source (Netty) n3k0nation Java 3 03.05.2010 19:10


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 16:13. Часовой пояс GMT +3.

Вверх