目录
- ServerBootstrap.bind()
-
- initAndRegister()
- init()
- register()
- doBind0()
ServerBootstrap.bind()
在第一篇的HelloWorld中通过ServerBootstrap.bind()
方法绑定端口号并最终启动Netty的服务,服务端的bind过程如下:
上面的代码主要分成两部分,第一部分是初始化与注册,第二部分为channel绑定端口号,一般来说会采用异步回调的机制。接下来我们具体分析这两部分的源码。
initAndRegister()
第一步创建channel的过程前面的文章已经分析过,第二步的init()
为抽象方法,服务端会在ServerBootstrap中实现,第三步的注册过程会在NioEventLoopGroup中实现。
init()
初始化的过程主要是把在HelloWorld中设置的属性值填充,然后向pipeline中添加初始化handler,当channel注册成功后执行一些初始化的工作。
register()
注册成功后会执行init()方法中向pipeline添加的ChannelInitializer的initChannel
方法,即向NioEventLopp提交一个任务,该任务是向pipeline添加ServerBootstrapAcceptor。
doBind0()
通过ServerBootstrap的bind()方法可知Netty很多工作都是异步执行的,在分析的时候需要多打断点或者log的形式分析,最后总结一下整个bind()的过程。
至此,**ServerBootstrap.bind()**的分析到此结束,感谢阅读。
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: