Alex Guo
文章36
标签33
分类10
netty入门

netty入门

服务端

  • 服务器启动
public class ServerTest {
    public static void main(String[] args) throws InterruptedException {

        /**
         * bossGroup, 父类的事件循环组只是负责连接,获取到连接后交给 workergroup的子事件循环组。
         * 参数的获取,业务的处理等工作均是由workergroup这个子事件循环组来完成。
         * 一个事件循环组一样可以完成所有的工作,但是Netty推荐的方式是使用两个事件循环组。
         */
        EventLoopGroup bossGroup = new NioEventLoopGroup();  //创建父事件循环组
        EventLoopGroup workerGroup = new NioEventLoopGroup(); //创建子类的事件循环组

        try{
            //创建启动服务器的对象
            ServerBootstrap serverBootstrap = new ServerBootstrap();

            /**
             * group方法接收两个参数, 第一个为父事件循环组,第二个参数为子事件循环组
             */
            serverBootstrap.group(bossGroup, workerGroup)
                    .channel(NioServerSocketChannel.class)  //bossGroup 的通道,只是负责连接
                    .childHandler(new TestChannelnitializer()); //设置子事件处理器,workerGroup的处理器,

            ChannelFuture channelFuture = serverBootstrap.bind(8899).sync();  //绑定端口
            channelFuture.channel().closeFuture().sync();

        }finally{
            bossGroup.shutdownGracefully();
            workerGroup.shutdownGracefully();
        }
    }
}