Netty权威指南:Netty总结-客户端创建

第十四章 客户端创建

14.1 Netty客户端创建流程分析

BootStrap是socket客户端创建工具类,通过Bootstrap可以方便地创建Netty客户端发起异步TCP连接操作

14.1.1 客户端创建时序图

在这里插入图片描述

14.1.2 客户端流程分析

  1. 用户线程创建BootStrap实例,通过API设置创建客户端相关的参数,异步发起客户端连接
  2. 创建处理客户端连接、I/O读写的Reactor线程组NioEventLoopGroup。通过构造函数指定I/O线程的个数,默认为cpu核数的两倍
  3. 通过 Bootstrap的ChannelFactory和用户指定的Channel 类型创建用于客户端连接的 NioSocketChannel,它的功能类似于JDK NIO类库提供的 SocketChannel;
  4. 创建默认的ChannelHandler Pipeline,用于调度和执行网络事件;
  5. 异步发起TCP连接,判断连接是否成功。如果成功,则直接将NioSocketChannel注册到多路复用器上,监听读操作位,用于数据报读取和消息发送:如果没有立即连接成功,则注册连接监听位到多路复用器,等待连接结果
  6. 注册对应的网络监听状态位到多路复用器;
  7. 由多路复用器在I/0现场中轮询各Channel,处理连接结果;
  8. 如果连接成功,设置Future结果,发送连接成功事件,触发ChannelPipeline执行
  9. 由ChannelPipeline调度执行系统和用户的ChannelHandler,执行业务逻辑

14.2 源码分析

public class EchoClient {
     
  
    private final String host;  
    private final int port;  
    private final int firstMessageSize;  
  
    public EchoClient(String host, int port, int firstMessageSize) {
     
        this.host = host;  
        this.port = port;  
        this.firstMessageSize = firstMessageSize;  
    }  
  
    public void run() throws Exception {
     
        // Configure the client.  
        EventLoopGroup group = new NioEventLoopGroup();  
        try {
     
            Bootstrap b = new Bootstrap();  
            b.group(group)  
             <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值