Channel

Channel

channel是通讯的载体,对应通讯的一端,在BIO中对应Socket,Nio中 对应SocketChannel, Netty中对应NioSocketChannel,ServerSocket同理
channelHandler是通道的处理器,一个channel往往有多个handler
channelpipeline是handler的容器,装载并管理handler的顺序(本质是双向链表)
1:channel创建时,会对应创建一个channelpipeline,pipeline首先会记录一个头部的处理器handler,当pipeline进行分发的时候,先分发给头部,然后依次执行,执行handler全部执行完成
2:channel创建时,会注册到EventLoop之中,EventLoop会监听事件的发生,不同的事件调用handler不同的处理方法,让流程运转起来

四种状态Channel

1:ChannelUnregistered 已创建但还未注册到监听器中
2;ChannelRegistered 已注册到监听器中EventLoop中
3:ChannelActive :连接完成处于活跃状态,此时可以接收和发送数据
4;ChannelInactive 非活跃状态 代表连接未建立或者已断开

Channelhandler生命周期

1:handlerAdded 把handler添加到pipeline之中
2;handlerRemoved 从pipeline中移除
3;execptionCaught 在处理过程中错误产生

Channel创建时机

在启动对象调用bind()或者connect方法时,会创建channel本质上通过反射,使用工厂的反射实现类创建对应的实例,此时对象的类型通过channel的参数来进行设定

你可能感兴趣的:(netty)