Netty学习4——传输

传输

1.传输API

    传输API的核心是interface Channnel,它被用于所有的I/O操作。

    每个Channel都将会被分配一个ChannelPipeline和ChannelConfig。ChannelConfig包含了该Channel的所有配置设置,并且支持热更新。由于支持热更新。由于特定的传输可能具有独特的设置,所以它可能会实现一个ChannelConfig的子类型。

    由于Channel是独一无二的,所以为了保证顺序将Channel声明为java.lang.Comparable的一个子接口。因此,如果两个不同的Channel实例都返回了相同的散列码,那么AbstractChannel中的comparaTo()方法的实现将会抛出一个Error。

    ChannelPipeline持有所有将应用于入站和出站数据以及事件的ChannelHandler实例,这些ChannelHandler实现了应用程序用于处理状态变化以及数据处理的逻辑。

    ChannelHandler的典型用途包括:

(1)将数据从一种格式转换为另一种格式;

(2)提供异常的通知;

(3)提供Channel变为活动的或者非活动的通知;

(4)提供当Channel注册到EventLoop或者EventLoop注销时的通知;

(5)提供有关用户自定义事件的通知。

    拦截过滤器  ChannelPipeline实现了一种常见的设计模式——拦截过滤器。UNIX管道是另外一个熟悉的例子:多个命令被链接在一起,其中一个命令的输出端将连接到命令行中下一个命令的输入端。

    你也可以根据需要通过添加或者移除ChannelHandler实例来修改ChannelPipeline。通过利用Netty的这项能力可以构建出高度灵活的应用程序。

    除了访问所分配的ChannelPipeline和ChannelConfig之外,也可以利用Channel的其它方法,其中最重要的列举如下:

Channel的方法
方法名 描述
eventLoop 返回分配给Channel的EventLoop
pipeline 返回分配给Channel的ChannelPipeline
isActive

如果Channel是活动的,则返回true。活动的意义可能依赖于底层的传输。例如,一个Socket传

输一旦连接到了远程节点便是活动的,而一个Datagram传输一旦被打开便是活动的

localAddress 返回本地的SocketAddress
remoteAddress 返回远程的SocketAddress
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值