传输

55 阅读1分钟

传输

  1. 核心:Channel

    1. 每个Channel都将会分配一个ChannelPipeline和ChannelConfig。ChannelConfig包含了该Channel的所有的配置设置。
    2. 由于channel是独一无二的,所以channel为了保证顺序将channel实现了Comparable接口,如果两个不同的Channel返回了相同的散列码,那么AbstractChannel的compareTo()将返回error
    3. ChannelPipeline持有所有将应用于入站和出站数据以及事件的ChannelHandler实例,这些ChannelHandler实现了应用程序用于处理状态变化以及数据处理的逻辑
  2. ChannelHandler的典型用途

    1. 将数据从一个格式转化成另一个格式
    2. 提供异常的通知
    3. 提供Channel变为活动的或非活动的通知
    4. 提供当Channel注册到EventLoop或者从EventLoop注销时的通知
    5. 提供有关用户自定义事件的通知
  3. Channel的方法

    1. eventLoop:返回分配给Channel的EventLoop
    2. pipeline:返回分配给Channel的ChannelPipeline
    3. isActive:如果Channel是活动的,返回true,如果一个Socket传输一旦连接到了远程节点就是活动的
    4. localAddress:返回本地的SocketAddress
    5. remoteAddress:返回远程的SocketAddress
    6. write:将数据写到远程节点,这个数据将被传递给ChannelPipeline,并且排队直到它被冲刷
    7. flush:将之前已写的数据冲刷到底层传输
    8. writeAndFlush:等同于先调用write再调用flush