Java 网络编解码错误
我正在编写一个简单的netty数据包服务。目前,我有一个服务器和一个带有中央协议模块的客户端 我的客户端日志如下所示: PacketId编码:1 写入的数据包。 写作智力:441 我的服务器日志: 包裹编号:8 协议为空?身份证号码:8 包裹编号:1 正在接收id为0的测试 编码器:Java 网络编解码错误,java,maven,netty,Java,Maven,Netty,我正在编写一个简单的netty数据包服务。目前,我有一个服务器和一个带有中央协议模块的客户端 我的客户端日志如下所示: PacketId编码:1 写入的数据包。 写作智力:441 我的服务器日志: 包裹编号:8 协议为空?身份证号码:8 包裹编号:1 正在接收id为0的测试 编码器: @Override protected void encode( ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf by
@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 );
}
}
}
@覆盖
受保护的无效解码(ChannelHandlerContext ChannelHandlerContext,ByteBuf ByteBuf,List List)引发异常{
final int packetId=byteBuf.readInt();
System.out.println(“PacketId:+PacketId”);
最终协议=Protocol.getProtocol(packetId);
if(协议==null){
System.out.println(“协议为空,id为:“+packetId”);
}否则{
最终的类代码不完整,例如什么是协议?如下所示: