对NIO 中channel的理解
Channel
NIO 中 一个 连接 就是 用 一个 Channel( 通道) 来 表示。 大家知道, 从更广泛 的 层面 来说, 一个 通道 可以 表示 一个 底层 的 文件 描述 符, 例如 硬件 设备、文件、 网络 连接 等。 然而, 远远 不止 如此, 除了 可以 对应 到底 层 文件 描述 符, Java NIO 的 通道 还可以 更加 细化。 例如, 对应 不同 的 网络 传输 协议 类型, 在 Java 中 都有 不同 的 NIO Channel( 通道) 实现。
Channel( 通道) 的 主要 类型
这里 不对 纷繁 复杂 的 Java NIO 通道 类型 进行 过多 的 描述, 仅仅 聚焦 于 介绍 其中 最为 重要的 四种 Channel( 通道) 实现: FileChannel、 SocketChannel、 ServerSocketChannel、 DatagramChannel。 对于 以上 四种 通道, 说明 如下:
- (1) FileChannel 文件 通道, 用于 文件 的 数据 读写。
- (2) SocketChannel 套 接 字 通道, 用于 Socket 套 接 字 TCP 连接 的 数据 读写。
- (3) ServerSocketChannel 服务器 嵌套 字 通道( 或 服务器 监听 通道), 允许 我们 监听 TCP 连接 请求, 为 每个 监 听到 的 请求, 创建 一个 SocketChannel 套 接 字 通道。
- (4) DatagramChannel 数据 报 通道, 用于 UDP 协议 的 数据 读写。 这个 四种 通道, 涵盖 了 文件 IO、 TCP 网络、 UDP IO 基础 IO。 下面 从 Channel( 通道) 的 获取、 读取、 写入、 关闭 四个 重要的 操作, 来 对 四种 通道 进行 简单 的 介绍。