【Netty 网络通信】Channel 接口解析

简介: 【1月更文挑战第9天】【Netty 网络通信】Channel 接口解析

Channel需要被注册到某个EventLoop上,在Channel整个生命周期内都由这个EventLoop处理IO事件,也就是说一个Channel和一个EventLoop进行了绑定, 但是一个EventLoop可以同时被多个Channel绑定。  

基本的I/O操作(bind()connect()read()write())依赖于底层网络传输所提供的原 语。

在基于Java的网络编程中,其基本的构造是类SocketNettyChannel 接口所提供 的API,被用于所有的I/O 操作。大大地降低了直接使用Socket 类的复杂性。此外,Channel 也是拥有许多预定义的、专门化实现的广泛类层次结构的根。 由于Channel 是独一无二的,所以为了保证顺序将Channel 声明为java.lang.Comparable 的一个子接口。

public interface Channel extends AttributeMap, ChannelOutboundInvoker, Comparable<Channel> {}

因此,如果两个不同的Channel 实例返回了相同的散列码,那么 AbstractChannel 中的 compareTo()方法的实现将会抛出一个Error

Channel 的生命周期状态:

  • ChannelUnregisteredChannel 已经被创建,但还未注册到EventLoop
  • ChannelRegisteredChannel 已经被注册到了 EventLoop
  • ChannelActiveChannel 处于活动状态(已经连接到它的远程节点)。它现在可以接 收和发送数据了
  • ChannelInactiveChannel 没有连接到远程节点 当这些状态发生改变时,将会生成对应的事件。这些事件将会被转发给ChannelPipeline 中的ChannelHandler,其可以随后对它们做出响应。在我们的编程中,关注ChannelActiveChannelInactive 会更多一些。  

重要Channel 的方法:

  • eventLoop: 返回分配给ChannelEventLoop
  • pipeline: 返回 ChannelChannelPipeline,也就是说每个 Channel 都有自己的 ChannelPipeline
  • isActive: 如果 Channel 是活动的,则返回true。活动的意义可能依赖于底层的传输。 例如,一个Socket 传输一旦连接到了远程节点便是活动的,而一个Datagram 传输一旦被 打开便是活动的。
  • localAddress: 返回本地的SokcetAddress
  • remoteAddress: 返回远程的SocketAddress
  • write: 将数据写到远程节点,注意,这个写只是写往Netty内部的缓存,还没有真正 写往socket
  • flush: 将之前已写的数据冲刷到底层socket进行传输。
  • writeAndFlush: 一个简便的方法,等同于调用write()并接着调用flush()
相关文章
|
1月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
240 1
|
19天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
19小时前
|
监控 负载均衡 网络协议
|
1天前
|
网络协议 物联网 网络安全
|
1天前
|
监控 安全 网络虚拟化
|
1天前
|
监控 安全 网络性能优化
|
6天前
|
Ubuntu 网络协议 Linux
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
28 0
|
17天前
|
存储 安全 测试技术
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
19 0
|
存储 设计模式 网络协议
Netty网络框架(一)
Netty网络框架
36 1

推荐镜像

更多