Netty客户端接入流程NioSocketChannel怎么创建


这篇文章主要为大家展示了“Netty客户端接入流程NioSocketChannel怎么创建”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Netty客户端接入流程NioSocketChannel怎么创建”这篇文章吧。我们继续剖析int localRead = doReadMessages(readBuf)这一部分逻辑这里只是简单的定义了一个ArrayList, doReadMessages(readBuf)方法就是将读到的链接放在这个list中, 因为这里是NioServerSocketChannel所以这走到了NioServerSocketChannel的doReadMessage()方法跟到doReadMessage()方法中:首先根据jdk的ServerSocketChannel拿到jdk的Channel, 熟悉Nio的小伙伴应该不会陌生封装成一个NioSokectChannel扔到Readbuf中这里的NioSocketChannel是对jdk底层的SocketChannel的包装, 我们看到其构造方法传入两个参数, this代表当前NioServerSocketChannel, ch代表jdk的SocketChannel我们跟到NioSocketChannel的构造方法中:这里看到调用了父类构造方法, 传入两个参数, parent代表创建自身channel的, NioServerSocketChannel, socket代表jdk底层的socketChannel其中SelectionKey.OP_READ代表其监听事件是读事件继续跟父类的构造方法:这里初始化了自身成员变量ch, 就是jdk底层的SocketChannel, 并初始化了自身的监听事件readInterestOp, 也就是读事件ch.configureBlocking(false)这一步熟悉nio的小伙伴也不陌生, 就是将jdk的SocketChannel设置为非阻塞我们继续跟到父类构造方法中:这里初始化parent, 也就是创建自身的NioServerSocketChannel, 并为自身创建了唯一id初始化unsafe, 我们跟到newUnsafe()方法中由于此方法是NioEventLoop调用的, 所以会走到其父类AbstractNioByteChannel的newUnsafe()跟到newUnsafe()中:这里创建了NioByteUnsafe对象, 所以NioSocketChannel对应的unsafe是NioByteUnsafe继续往下跟, 我们看到其初始化了pipeline, 有关pipline的知识, 我们会在下一章节中讲到回到NioSocketChannel中的构造方法:同NioServerSocketChannel一样, 这里也初始化了一个Config属性, 传入两个参数, 当前NioSocketChannel自身和jdk的底层SocketChannel的socket对象同样, 这个类是NioSocketChannel的内部类继续跟父类构造方法:这里保存了SocketChannel的socket对象, 并且默认的情况禁止了Nagle算法, 有关Nagle, 感兴免费云主机域名趣的同学可以学习下相关知识继续跟到父类构造方法中:又跟到到了我们熟悉的部分了, 也就是说, 无论NioServerSocketChannel和NioSocketChannel, 最后都会初始化DefaultChannelConfig, 并创建可变ByteBuf分配器, 我们之前小节对此做过详细剖析这里不再赘述。以上是“Netty客户端接入流程NioSocketChannel怎么创建”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云主机行业资讯频道!

相关推荐: Shell查找命令find和grep如何使用

本文小编为大家详细介绍“Shell查找命令find和grep如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Shell查找命令find和grep如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。语法格式:find [路径…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/23 18:13
Next 07/23 18:16

相关推荐