09-27-2012, 08:56 PM
Тогда да. Дешифруем и разделяем.
Netty
|
09-27-2012, 08:56 PM
Тогда да. Дешифруем и разделяем.
09-28-2012, 09:48 PM
Подскажите что не так делаю. Ниже работающий правильно вариант, но без Lenght decodera.
[src=java] @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; } [/src] Если его добавить , то не один не отрабатывает, только коннект происходит. [src=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. } } [/src] Добавлял после первого декодера.
09-28-2012, 11:06 PM
В декодерах проверь, что они возвращяют. Если null, то нужно разобраться почему.
09-28-2012, 11:13 PM
У них метод decode() даже не вызывается , если добавить этот LenghtDecoder
09-28-2012, 11:16 PM
А сам LenghtDecoder не null возвращает?
Не вызывается вообще, и не возвращает ничего ) В pipeline важен же порядок, в каком добавлять ? Если там один pipeline.addLast("decoder", new PacketFrameDecoder());, то все хорошо работает, если после него еще один pipeline.addLast("Lenghtdecoder", new LengthDecoder());, то ни один из них не вызывается
На русском статей кроме хабра нету больше информации по netty ?
09-28-2012, 11:53 PM
У меня все обработчики в таком же порядке, и все работает. Могу лишь посоветовать попробовать поменять местами или начать добавлять с минимума.
Единственная проблема с LengthFieldBasedFrameDecoder`ом у меня была из-за того, что я не указал в Bootstrap`e, что нужно создавать буферы с порядком байт little endian.
09-29-2012, 12:10 AM
ChannelBuffer обработанный должен идти дальше по обработчикам в порядке, который указан так ?
09-29-2012, 12:17 AM
Так) Только не обязательно ChannelBuffer, сигнатура метода protected Object decode(... Можете что угодно передавать, главное чтобы дальше этот объект правильно обработали.
09-29-2012, 12:34 AM
А как в Bootstrape сделать littleEndian ?, а то я в декодере возвращаю
[src=java]return ChannelBuffers.wrappedBuffer(ByteOrder.LITTLE_ENDIAN, allData);[/src] |
« Предыдущая | Следующая »
|
Возможно похожие темы ... | |||||
Тема | Автор | Ответы | Просмотры | Последний пост | |
Netty StartUp | 15 | 7,228 |
08-11-2013, 04:49 PM Последний пост: KID |
||
Netcore Source (Netty) | 3 | 4,531 |
05-03-2010, 07:10 PM Последний пост: Aquanox |