Channel

红太狼 2024-04-17 06:25 174阅读 0赞

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)来释放所有资源非常重要。这确保以适当的方式释放所有资源,即文件句柄。

发表评论

表情:
评论列表 (有 0 条评论,174人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Channel

    hannel是network socket或能够执行IO操作(如read,write,connect,bind)的组件的纽带。 Channel为用户提供: 通道的当前...

    相关 gRPC-Channel

    gRPC Channel `Channel` 是用于执行 RPC 请求的概念上的端点连接,基于负载和配置,一个 `Channel` 可以有 0 或多个真实连接 `Sub

    相关 Go:channel

    一、channel 在 Go 语言里,不仅可以使用原子函数和互斥锁来保证对共享资源的安全访问以及消除竞争状态,还可以使用 channel,通过发送和接收需要共享的资源,在

    相关 NIO之Channel

    1、基本概念 Java NIO中,channel用于数据的传输,类似于传统BIO中的流(IOStream)的概念。 我们都知道,系统的I/O都分为两个阶段: 等