15、Netty源码分析:ServerSocketChannel

NioServerSocketChannel中调用newChannel方法创建java原生的channel,过程如下:

*

ServerSocketChannel是一个抽象类,WEPollSelectorProvider调用openServerSocketChannel方法创建的是它的实现类ServerSocketChannelImpl,类结构如下:

*

ServerSocketChannel的参数如下:

*

当channel调用register方法向Selector注册int代表的类型事件成功后返回SelectionKey,该key会被记录到channel的keys数组,Selector会监控注册的事件类型是否有发生,如有发生会根据key通知channel。

ServerSocketChannel的功能如下:

*

channel调用register方法向Selector注册,调用bind方法绑定端口号,调用accept方法接受客户端发来的连接请求并建立连接,调用close方法关闭channel。

NioServerSocketChannel最终调用带provider的构造函数创建ServerSocketChannel,源码如下:
*

ServerSocketChannel是java的原生channel,它作为NioServerSocketChannel的channel参数的值,NioServerSocketChannel执行相应的操作时最终会调用其来执行。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: