传输
传输
-
核心:Channel
- 每个Channel都将会分配一个ChannelPipeline和ChannelConfig。ChannelConfig包含了该Channel的所有的配置设置。
- 由于channel是独一无二的,所以channel为了保证顺序将channel实现了Comparable接口,如果两个不同的Channel返回了相同的散列码,那么AbstractChannel的compareTo()将返回error
- ChannelPipeline持有所有将应用于入站和出站数据以及事件的ChannelHandler实例,这些ChannelHandler实现了应用程序用于处理状态变化以及数据处理的逻辑
-
ChannelHandler的典型用途
- 将数据从一个格式转化成另一个格式
- 提供异常的通知
- 提供Channel变为活动的或非活动的通知
- 提供当Channel注册到EventLoop或者从EventLoop注销时的通知
- 提供有关用户自定义事件的通知
-
Channel的方法
- eventLoop:返回分配给Channel的EventLoop
- pipeline:返回分配给Channel的ChannelPipeline
- isActive:如果Channel是活动的,返回true,如果一个Socket传输一旦连接到了远程节点就是活动的
- localAddress:返回本地的SocketAddress
- remoteAddress:返回远程的SocketAddress
- write:将数据写到远程节点,这个数据将被传递给ChannelPipeline,并且排队直到它被冲刷
- flush:将之前已写的数据冲刷到底层传输
- writeAndFlush:等同于先调用write再调用flush