当前位置: 首页 > wzjs >正文

钓鱼网站制作方法长沙seo培训

钓鱼网站制作方法,长沙seo培训,优狐网站建设,网站建设费发票名称文章目录 1. 介绍2. 启动流程2.1 创建并初始化 Channel2.2 注册 Channel 到 EventLoop2.3 绑定端口并启动监听2.4 处理新连接(主从 Reactor 模型) 3. 启动流程图4. 总结 1. 介绍 Netty 服务器启动的核心入口是 ServerBootstrap 对象的 bind(int inetPor…

文章目录

  • 1. 介绍
  • 2. 启动流程
    • 2.1 创建并初始化 Channel
    • 2.2 注册 Channel 到 EventLoop
    • 2.3 绑定端口并启动监听
    • 2.4 处理新连接(主从 Reactor 模型)
  • 3. 启动流程图
  • 4. 总结


1. 介绍

Netty 服务器启动的核心入口是 ServerBootstrap 对象的 bind(int inetPort) 方法,本文将介绍 bind(int inetPort) 内部的执行流程。

2. 启动流程

2.1 创建并初始化 Channel

  • 创建 NioServerSocketChannel
    • 通过反射实例化用户指定的 Channel 类型(默认为 NioServerSocketChannel),其无参构造函数会通过调用 SelectorProvider 对象的 openServerSocketChannel() 方法 创建底层 JDK ServerSocketChannel,并设置为非阻塞模式。
    • 同时初始化 ChannelConfig(如 NioServerSocketChannelConfig)和 ChannelPipeline含头尾节点)。
  • 初始化 Channel 参数:通过 option() 设置的参数(如 SO_BACKLOG)被应用到 ChannelConfig,但部分参数(如 SO_BACKLOG)需在 绑定端口时 通过 JDK 的 ServerSocket 生效。

2.2 注册 Channel 到 EventLoop

  • 选择 EventLoop:从 BossGroup 的 EventLoopGroup 中选择一个 NioEventLoop(主 Reactor)。
  • 异步注册过程
    • 通过 register()Channel 注册到 EventLoop,该操作由 EventLoop 线程 异步执行若当前线程不是 EventLoop 线程,则任务会被提交到任务队列。
    • 注册成功后,Channel 进入“已注册未激活”状态(尚未绑定端口)。
  • 初始化 ChannelPipeline:注册完成后触发 ChannelInitializer 对象的 initChannel() 回调,执行以下操作:
    • 添加用户 Handler:将用户通过 handler() 设置的 Handler 添加到 Pipeline 中。
    • 添加 ServerBootstrapAcceptor:作为最后一个处理器,负责将新连接的 SocketChannel 分配给 WorkerGroup,并传递 childHandler()childOptions() 等配置。

2.3 绑定端口并启动监听

  • 绑定本地端口
    • 提交绑定任务到 EventLoop 的任务队列,由 EventLoop 线程调用 doBind():底层通过 JDK 的 ServerSocketChannel 对象的 bind() 方法绑定端口,此时 SO_BACKLOG 等参数真正生效。
    • 绑定成功后触发 ChannelActive 事件:通过 beginRead() 设置 interestOpsAbstractNioChannel 自动注册 OP_ACCEPT 事件。
  • 异步通知:绑定结果通过 ChannelFuture 通知,用户可通过 sync() 阻塞等待 或 addListener() 回调处理。

2.4 处理新连接(主从 Reactor 模型)

  • 接受连接请求:主 Reactor 的 NioEventLoop 监听到 OP_ACCEPT 事件后,调用 NioServerSocketChannel 对象的 doReadMessages() 方法,通过 ServerSocketChannel 对象的 accept() 方法创建 SocketChannel 对象。
  • 分配从 ReactorServerBootstrapAcceptor 将新建的 SocketChannel 提交到 WorkerGroup 的某个 EventLoop(从 Reactor),可能跨线程执行(通过 EventLoop.execute())。
  • 初始化客户端 Channel
    • 参数应用childOption()childAttr() 在注册时应用到客户端 Channel
    • 异步初始化:通过 childHandler() 中的 ChannelInitializer 延迟添加用户 Handler,在 EventLoop 线程中触发 initChannel(),避免阻塞主 Reactor。
    • 事件注册:客户端 Channel 默认关注 OP_READ 事件(可通过 childHandler() 修改)。

3. 启动流程图

启动流程图

4. 总结

Netty 服务器的启动流程主要体现在 ServerBootstrap 对象的 bind(int inetPort) 方法里,分为四个部分:

  • 创建并初始化 Channel
  • 注册 ChannelEventLoop
  • 绑定端口并启动监听。
  • 使用主从 Reactor 模型处理事件。
http://www.dtcms.com/wzjs/469877.html

相关文章:

  • 容桂销售型网站建设网络营销平台有哪些?
  • 做海报赚钱的网站网络推广引流最快方法
  • 外贸公司介绍东莞网站推广优化公司
  • 网站如何添加代码做网站建设的公司
  • 网站的风格有哪些bt磁力猫
  • 电子商务网站建设与维护总结四川seo推广公司
  • 做网站要的带宽是什么seo点击排名源码
  • wordpress 做网站今日头条收录入口
  • 太原网站建设方案广告媒体资源平台
  • 苏州做网站公司网站设计方案
  • 个人网站备案地址选择网络营销品牌案例
  • 罗湖网站建设的公司浙江企业seo推广
  • 网站建设技术公司排名谷歌商店安卓版下载
  • 五台县建设局网站长春seo结算
  • 上海公司网站建设线上营销推广
  • 大连网站设计团队网站代理公司
  • 凡科快图一键抠图深圳seo优化外包
  • 响应式网站 谷歌 移动网站网页分析报告案例
  • 外包岗位为什么不能去上海seo推广
  • 主机屋做淘宝客网站站长之家怎么用
  • 如何提高网站的访问速度宁波网站推广网站优化
  • 028网站建设工作室宁波seo公司
  • 推广的几种方式优化大师手机版下载安装app
  • 个人创业做网站外贸如何推广
  • 301的网站用什么来做近期新闻大事
  • 盐城网站开发苏州百度推广分公司电话
  • 网站开发技术可行性免费推广有哪些
  • 购物商城网站开发功能消百度自然排名优化
  • 给人做网站多少钱榆林百度seo
  • 如何查询网站已经提交备案百度资源搜索引擎