Channel

Channel是network socket或能够执行IO操作(如read,write,connect,bind)的组件的纽带。

Channel为用户提供:

通道的当前状态(例如它是否打开?是否已连接?)
通道的配置参数(例如接收缓冲区大小)
通道支持的I/O操作(例如读,写,连接和绑定)
ChannelPipeline,用于处理与通道关联的所有I/O事件和请求

所有IO操作都是异步的。
Netty中的所有IO操作都是异步的。这意味着任何IO调用都将立即返回,并且不保证在调用结束时所请求的IO操作已完成。
相反,您将返回一个ChannelFuture实例,该实例将在请求的IO操作成功,失败或取消时通知您。

Channel是分层的
一个Channel可以拥有一个父母,具体取决于它的创建方式。例如,ServerSocketChannel接受的SocketChannel将返回ServerSocketChannel作为parent()的父级。

层次结构的语义取决于Channel所属的传输实现。例如,您可以编写一个新的Channel实现,创建共享一个套接字连接的子通道,如BEEP和SSH那样。

向下转发以访问特定于传输的操作
某些传输会暴露特定于传输的其他操作。将Channel向下转换为子类型以调用此类操作。例如,使用旧的I/O数据报传输,由DatagramChannel提供多播加入/离开操作。

释放资源
完成Channel后,调用close()或close(ChannelPromise)来释放所有资源非常重要。这确保以适当的方式释放所有资源,即文件句柄。

你可能感兴趣的:(Netty)