netty连接nbiot_Netty新连接接入

问题

1.Netty是在哪里检测有新连接接入的?

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

2.新连接是怎样注册到NioEventLoop线程的?

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

Netty新连接接入处理逻辑

(1)检测新连接:新连接通过服务端Channel绑定的Selector轮询出Accept事件

(2)创建NioSocketChannel:基于jdkNio的channle创建出一个netty的NioSocketChannel,也就是客户端Channel

(3)分配线程及注册selector:netty给客户端Channel分配一个NioEventLoop,并且把这条Channel注册到该NioEventLoop对应的selector上,至此这条Channel后续的读写都由此NioEventLoop进行管理

(4)向selector注册读事件:注册的过程和服务端启动注册事件复用同一段逻辑。

(1)检测新连接

processSelectedKey(key,channel)[入口]:添加断点

NioMessageUnsafe.read()

doReadMessages()[while循环]

javaChannel().accept()

运行Server.java的main函数,启动服务端

在terminal中输入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值