Ошибка декодирования Netty Encoding - PullRequest
0 голосов
/ 15 мая 2018

Я кодирую простой пакетный сервис Netty. В настоящее время у меня есть сервер и клиент с модулем центрального протокола.

Журнал моего клиента выглядит так:

PacketId в кодировке: 1 Записанный пакет. Запись int: 441

Журнал моего сервера:

PacketId: 8 протокол пуст? с id: 8 PacketId: 1 получение теста с идентификатором: 0

кодировщик:

@Override
    protected void encode( ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf byteBuf ) {
        final Protocol protocol = Protocol.getProtocol( packet.getClass() );

        if ( protocol == null ) {
            throw new IllegalStateException( "The requested packet is not registered!" );
        } else {
            final int packetId = protocol.getId();

            if ( packetId > -1 ) {
                byteBuf.writeInt( packetId );
                System.out.println( "PacketId encoded: " + packetId );
                packet.write( byteBuf );
                System.out.println( "Writed packet." );
            }
        }
    }

Декодер:

@Override
    protected void decode( ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List<Object> list ) throws Exception {
        final int packetId = byteBuf.readInt();
        System.out.println( "PacketId: " + packetId );
        final Protocol protocol = Protocol.getProtocol( packetId );

        if ( protocol == null ) {
            System.out.println( "protocol is null ? with id: " + packetId );
        } else {
            final Class<? extends Packet> packetClass = Objects.requireNonNull( protocol ).getPacketClass();

            if ( packetClass != null ) {
                Packet packet = packetClass.newInstance();
                packet.read( byteBuf );

                list.add( packet );
            }
        }
    }

Кто-нибудь знает, как решить?

Спасибо за любой вклад!

...