手记

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


1 检测新连接

打断点


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


执行到此,进入查看




以上即对应 read 方法






继续返回原先位置

2 NioSocketChannel的创建









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




看看这个静态变量





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



3 Channel的分类



先看看最顶层的框架 Channel



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


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




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


开启非阻塞模式





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


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






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




服务端 Chanel


用于某种 Chanel 的读写情况

主要负责读事件


读字节


不同端配置项也不同

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





即为此处调用




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













回去看看 register 方法







5 NioSocketChannel读事件的注册












可以开始接收数据了




回顾一下创建



6 新连接接入总结



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



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



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


0人推荐
随时随地看视频
慕课网APP