Java Netty中多种数据包类型的解码和编码
因此,我正在处理一个特定类型的数据包的netty服务器上工作。这个netty服务器不是由我创建的,我正在尝试向它添加另一种类型的数据包处理程序、解码器和编码器。由于现有处理程序的实现很差,我不得不在这样做之前添加我的处理程序Java Netty中多种数据包类型的解码和编码,java,netty,minecraft,Java,Netty,Minecraft,因此,我正在处理一个特定类型的数据包的netty服务器上工作。这个netty服务器不是由我创建的,我正在尝试向它添加另一种类型的数据包处理程序、解码器和编码器。由于现有处理程序的实现很差,我不得不在这样做之前添加我的处理程序 channel.pipeline() .addLast(new custom.PacketDecoder().server()) // My
channel.pipeline()
.addLast(new custom.PacketDecoder().server()) // My Packet Decoder
.addLast(new custom.PacketEncoder().server()) // My Packet Encoder
.addLast(new custom.NetworkHandler().server()) // My Packet Handler
.addLast("timeout", new ReadTimeoutHandler(30)) // Not made by me
.addLast("legacy_query", new LegacyPingHandler(ServerConnection.this)) // Not made by me
.addLast("splitter", new PacketSplitter()) // Not made by me
.addLast("decoder", new PacketDecoder(EnumProtocolDirection.SERVERBOUND)) // Not made by me
.addLast("prepender", new PacketPrepender()) // Not made by me
.addLast("encoder", new PacketEncoder(EnumProtocolDirection.CLIENTBOUND)) // Not made by me
.addLast("packet_handler", networkmanager); // Not made by me
到目前为止,这类方法仍然有效,但问题是,如果它接收到它应该能够处理的非我的数据包,我的处理程序将阻止这些数据包通过并正确处理。如何在不接触其他处理程序的情况下将非我的数据包传递给其他处理程序。处理程序应该检查入站数据包是否属于处理程序可以处理的特定类型。如果一个数据包“不是您的”,处理程序应该将其向上游传递到管道中的下一个处理程序(对于netty 4.x-
ChannelHandlerContext.fireChannelRead(Object)
)。
也许这会有帮助。你能给我们看一下解码器和编码器的代码吗?