为了账号安全,请及时绑定邮箱和手机立即绑定

Netty源码阅读入门实战(五)-新连接检测

标签:
Java

5bcc49a10001cab810000337.jpg


5bcc49a40001dec410000514.jpg

1 检测新连接

5bcc49a60001dbbb10000429.jpg

5bcc49a600013f3310000147.jpg

打断点


telnet 此机地址,引起连接建立


5bcc49a700012c8a10000274.jpg

执行到此,进入查看


5bcc49a8000188f410000370.jpg


5bcc49a90001384808440660.jpg


5bcc49a90001540410000102.jpg

以上即对应 read 方法


5bcc49aa00010e4010000513.jpg


5bcc49ac00016da410000446.jpg


1000


1000


继续返回原先位置

2 NioSocketChannel的创建

1000


1000


1000


1000


1000


1000


1000


1000


禁止小包组成大包再发送方法


1000


1000


看看这个静态变量

1000


1000


1000


1000


由于 netty 常部署在服务端,所以默认启动 TCP无延时

1000


1000


1000

3 Channel的分类

1000


1000


先看看最顶层的框架 Channel


1000


网络 Socket 读写绑定的一种抽象

1000


1000

作为骨架,保存了很多基础且重要的信息


1000


1000


使用选择器监听 IO 事件的一个抽象类
保存了 JDK 底层的一个 Channel


1000

开启非阻塞模式


1000


1000


1000


1000

回到了抽象类,即保存了一个ACCEPT 事件


看过服务 Channel 后,再看看客户端 Channel

1000


1000


1000


1000


1000


客户端与服务端的 Channel 在 unsafe 类上也不同
客户端 Chanel


1000


1000


服务端 Chanel

1000


用于某种 Chanel 的读写情况

1000

主要负责读事件


1000

读字节


不同端配置项也不同

1000

4 新连接NioEventLoop的分配和selector注册

1000


1000


1000


1000


即为此处调用


1000


1000


1000

回调之后,最终都会删除自身


1000


1000


1000


1000


1000


1000


1000


1000


1000


1000


1000


回去看看 register 方法


1000


1000


1000


1000


1000


1000

5 NioSocketChannel读事件的注册

1000


1000


1000


1000


1000


1000


1000


1000


1000


1000


1000


可以开始接收数据了


1000


1000


回顾一下创建

1000


1000


1000

6 新连接接入总结

1000


1000


boss线程的第一个过程轮训处Accept事件,然后boss线程第二个过程通过jdk底层的channel的accept方法创建该连接。


1000


新连接NioEventLoop的分配和selector注册可以回答。boss线程调用chooser的next方法,拿到一个NioEventLoop,然后将这条连接注册到NioEventLoop的selector上面。



作者:芥末无疆sss
链接:https://www.jianshu.com/p/df5673e80697
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消