Channel
目录
常见的 channel 有:FileChannel
,DatagramChannel
,SocketChannel
,ServerSocketChannel
¶概述
通道(Channel):由 java.nio.channels 包定义 的。Channel 表示 IO 源与目标打开的连接。 Channel 类似于传统的“流”。只不过 Channel 本身不能直接访问数据,Channel 只能与 Buffer 进行交互
🆚通道与流的区别:
- 通道可以同时进行读写,而流只能读或者只能写
- 通道可以实现异步读写数据
- 通道可以从缓冲读数据,也可以写数据到缓冲
Channel 在 NIO 中是一个接口
1 | public interface Channel extends Closeable{} |
¶常用的 Channel 实现类
实现类 | 含义 |
---|---|
FileChannel | 用于读取、写入、映射和操作文件的通道 |
DatagramChannel | 通过 UDP 读写网络中的数据通道 |
SocketChannel | 通过 TCP 读写网络中的数据 |
ServerSocketChannel | 可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel |
✨ServerSocketChannel 类似 ServerSocket , SocketChannel 类似 Socket
¶两个 Channel 传输数据
1 | public static void main(String[] args) throws IOException { |