• 5-网络架构和Netty系列-Bootstrap和Channel源码分析


    Bootstrap组成

    参考源码AbstractBootstrap

    1. 客户端启动类Bootstrap

    Bootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。

    • 声明Bootstrap
      • server端为ServerBootstrap
      • client端为Bootstrap

    2. 设置初始化内容

    • 创建reactor 线程组
        EventLoopGroup bossLoopGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerLoopGroup = new NioEventLoopGroup();
    
    • 1
    • 2
    • 为父(接收者)和子(客户端)设置 EventLoopGroup。
        b.group(bossLoopGroup, workerLoopGroup);
    
    • 1
    • 指定Channel的类型
      • server端为NioServerSocketChannel
      • client端为NioSocketChannel
    • 设置处理数据的Handler

    3. 构建ChannelFuture

    • 声明ChannelFuture,实例化Channel
    ChannelFuture regFuture = initAndRegister();
    ChannelFuture initAndRegister() {
        Channel channel = channelFactory().newChannel();
    	  ChannelFuture regFuture = group().register(channel);
      	return regFuture;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • ChannelFuture注册监听器
    • doBind地址和事件
    • 返回Future

    Channel

    在Netty中,Channel相当于一个Socket的抽象,它为用户提供了关于Socket状态(是连接还是断开)及对Socket的读、写等操作。每当Netty建立了一个连接,都创建一个与其对应的Channel实例。

    Channel的作用

    Netty 网络通信的组件,能够用于执行网络 I/O 操作。Channel 为用户提供:

    • 当前网络连接的通道的状态(例如是否打开?是否已连接?)
    • 网络连接的配置参数 (例如接收缓冲区大小)
    • 提供异步的网络 I/O 操作(如建立连接,读写,绑定端口),异步调用意味着任何 I/O 调用都将立即返回,并且不保证在调用结束时所请求的 I/O 操作已完成。 调用立即返回一个 ChannelFuture 实例,通过注册监听器到 ChannelFuture 上,可以 I/O 操作成功、失败或取消时回调通知调用方。
    • 支持关联 I/O 操作与对应的处理程序。

    Channel 类型

    不同协议、不同的阻塞类型的连接都有不同的 Channel 类型与之对应。下面是一些常用的 Channel 类型:

    • NioSocketChannel,异步的客户端 TCP Socket 连接。
    • NioServerSocketChannel,异步的服务器端 TCP Socket 连接。
    • NioDatagramChannel,异步的 UDP 连接。
    • NioSctpChannel,异步的客户端 Sctp 连接。
    • NioSctpServerChannel,异步的 Sctp 服务器端连接,这些通道涵盖了 UDP 和 TCP 网络 IO 以及文件 IO。
  • 相关阅读:
    git patch 合入patch
    猫罐头哪种好吃又健康?精选5款营养美味的猫罐头推荐!
    外贸邮件推广怎么统计维度
    服务器的操作系统,你选择哪些?
    基于JAVA模拟考试系统计算机毕业设计源码+数据库+lw文档+系统+部署
    Transformer发展历程 Decoder输出特征利用DCT解码投分割
    ROS采用vector动态传递数组参数
    vuex 设置方式 及 监听vuex中的state属性获取方式
    操作DOM对象(重点)
    HarmonyOS开发实例:【分布式手写板】
  • 原文地址:https://blog.csdn.net/xianghanscce/article/details/125631964