Netty源码分析3:创建一个简单的Netty服务并测试

创建并启动一个Netty服务端

如何创建并启动一个Netty服务端?通过如下的代码将启动一个netty服务端并监听在8888端口。

public class MyNettyServer {
   
    private static Logger logger = LogManager.getLogger(MyNettyServer.class);

    public static void main(String[] args) throws InterruptedException {
   
        NioEventLoopGroup boss = new NioEventLoopGroup(1);
        NioEventLoopGroup worker = new NioEventLoopGroup();
        try {
   
            new ServerBootstrap()
                    .group(boss, worker)//该方法返回ServerBootstrap
                    .option(ChannelOption.SO_BACKLOG, 128)//该方法返回ServerBootstrap
                    .channel(NioServerSocketChannel.class)//该方法返回ServerBootstrap
                    .handler(new MyServerChannelDuplexHandler())//该方法返回ServerBootstrap
                    .childHandler(new MyChannelInitializer("客户端"))//该方法返回ServerBootstrap
                    .bind(8888)//返回ChannelFuture
                    .sync()//返回ChannelFuture
                    .addListener(future -> logger.info("服务启动成功:" + future.isSuccess()))//返回ChannelFuture
                    .channel()//返回Channel
                    .closeFuture()//返回ChannelFuture
                    .sync()//返回ChannelFuture
                    .addListener(future -> logger.info("端口已关闭,如有异常,则异常原因为:"+future.cause()));//返回ChannelFuture
        } finally {
   
        	//优雅的关闭boss和worker
            boss.shutdownGracefully();
            worker.shutdownGracefully();
        }
    }
}
  • NioEventLoopGroup boss:相当于循环监听端口操作,当有客户端发起连接时会得到一个与客户端对应的socket操作用于对端双方通信
  • NioEventLoopGroup worker:上述boss在创建好与客户端的对应的socket后会将socket交给worker,由worker来执行具体的通信操作
  • NioEventLoopGroup:异步事件循环执行器组,内部定义了一组异步事件执行器NioEventLoop,暂时可以简单的理解为线程池与线程的关系,后续会进行专门分析
  • ServerBootstrap:服务启动引导类,通过该类可以快速的构建一个Netty应用,同时该类提供了一个链式编程
    • group():配置boss和worker,简单的让当前ServerBootstrap持有boss和work。
    • option(ChannelOption.SO_BACKLOG, 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值