上一篇我们提到服务器启动的过程,这篇我们来分析一下服务器bind的过程。
validate()方法只做了一些必要的验证。如果有特殊的验证需求,用户可以重写validate()方法。bind的主要逻辑在doBind中。根据小编阅读源码的经历总结出一点。许多方法里面只做了一些校验,而真正的逻辑全部都在do开头的方法中。
从调用的第一个方法可以看出首先是初始化和注册,那这里到底是初始化和注册什么呢?我们接着看initAndRegister()方法。
从名字中也能看出,会先创建channel。createChannel是一个抽象方法,具体的逻辑在类ServerBootstrap中实现。
next方法选中一个EventLoop初始化channel。
newChannel使用反射来创建channel。使用的是NioServerSocketChannel类。在使用反射创建channel时,会触发NioServerSocketChan