Java 网络设计[使用Netty]

Java 网络设计[使用Netty],java,networking,netty,Java,Networking,Netty,我正在做一个多人游戏项目,我有点困惑如何设置它。主要是因为我不熟悉Netty框架 每个玩家都应该有自己的烟斗来处理数据包吗?还是应该只有一个管道来处理所有入站数据包 如果一个玩家应该拥有自己的数据包,我将如何使该玩家成为管道的所有者 目前这是我的服务器代码 public static void main(String[] params) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(

我正在做一个多人游戏项目,我有点困惑如何设置它。主要是因为我不熟悉Netty框架

每个玩家都应该有自己的烟斗来处理数据包吗?还是应该只有一个管道来处理所有入站数据包

如果一个玩家应该拥有自己的数据包,我将如何使该玩家成为管道的所有者

目前这是我的服务器代码

public static void main(String[] params) throws Exception
    {
        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try 
        {
            ServerBootstrap bootstrap = new ServerBootstrap();
            bootstrap.group(bossGroup, workerGroup)
                .channel(NioServerSocketChannel.class)
                .option(ChannelOption.SO_BACKLOG,  100)
                .handler(new LoggingHandler(LogLevel.DEBUG))
                .childHandler(new ChannelInitializer<SocketChannel>()
            {
                @Override
                public void initChannel(SocketChannel channel) throws Exception 
                {
                    ChannelPipeline pipeline = channel.pipeline();
                    pipeline.addLast(new LoggingHandler(LogLevel.DEBUG));
                    pipeline.addLast("PacketHandler", new SinglePacketPipe());
                    System.err.println("Connection Established - Pipes constructed..");
                }
            });

            ChannelFuture future = bootstrap.bind(SERVER_PORT).sync();
            System.err.println("Server initialized..");
            // When the server socket is closed, destroy the future.
            future.channel().closeFuture().sync();
        }
        finally
        {
            // Destroy all executor groups
            bossGroup.shutdownGracefully();
            workerGroup.shutdownGracefully();
        }
    }
publicstaticvoidmain(字符串[]参数)引发异常
{
EventLoopGroup bossGroup=新的NioEventLoopGroup(1);
EventLoopGroup workerGroup=新的NioEventLoopGroup();
尝试
{
ServerBootstrap bootstrap=newserverbootstrap();
bootstrap.group(bossGroup、workerGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG,100)
.handler(新的LoggingHandler(LogLevel.DEBUG))
.childHandler(新的通道初始值设定项()
{
@凌驾
public void initChannel(SocketChannel通道)引发异常
{
ChannelPipeline=channel.pipeline();
addLast(新的LoggingHandler(LogLevel.DEBUG));
addLast(“PacketHandler”,新的SinglePacketPipe());
系统错误println(“已建立连接-已建造管道”);
}
});
ChannelFuture=bootstrap.bind(服务器\端口).sync();
System.err.println(“服务器已初始化”);
//当服务器套接字关闭时,破坏未来。
future.channel().closeFuture().sync();
}
最后
{
//销毁所有执行器组
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
}

根据定义,Netty中的频道总是有自己的管道。也就是说,如果有1000个连接,那么就有1000个管道。让它们在这些管道中具有相同的处理程序集,或者让其中一些具有不同的管道配置,完全取决于您

请注意,管道是可动态配置的。您可以决定在
initChannel()
或处理程序的
channelregisted()
(甚至在任何处理程序方法中)中添加/删除哪些处理程序