NIO与Socket笔记 : 通道和 FileChannel 类的使用

在 NIO 技术中,要将操作的数据打包到缓冲区中,而缓冲区中的数据想要传输到目的 地是要依赖于通道的 。

缓冲区是将数据进行打包,而通道是将数据进行传输,可见两者是形 影不离的 。

NIO 技术中的数据要放在缓 冲 区中进行管理,再使用通道将缓冲区中的数据传输到目的地 。

从缓冲区和通道的数据类型可以发现,缓冲区都是类,而通道都是接口,这是由于通道的功能实现是要依赖于操作系统的,

Channel 接口只定义有哪些功能,而功能的具体实现 在不同的操作系统中是不一样的,

因此 ,在 JDK 中, 通道被设计成接口数据类型 。

子接口: 11个

AsynchronousByteChannel : 使通道支持异步 I/O 操作, 操作单位为字节 。

AsynchronousChannel : 使通道支持异步 I/O 操作

ByteChannel : 将 ReadableByteChannel (可读字节通道)与 WritableByte Channel (可写字节通道)的规范进行了统一,

                       也就是 ByteChannel接口的父接口就是 Readable­ ByteChannel 和 WritableByteChannel

GatheringByteChannel : 将 多个缓冲区中的数据写入到通道 中 。

InterruptibleChannel : 使通道能以异步的方式进行关闭与中断 。

MulticastChannel : 使通道支持 Internet Protocol ( IP)多播 。

                              IP 多播就 是将多个主机地址进行打包,形成一个组( group),然后将 IP 报文向这个组进行发送,

                              也就相当于同时向多个主机传输数据。

NetworkChannel : 使通道与 Socket进行关联,使通道中的数据能在 Socket技术上进行传输 。

ReadableByteChannel : 使通道允许对字节进行读操作 。

ScatteringByteChannel : 可以从通道中读取字节到多个缓冲区中 。

SeekableByteChannel : 在字节通道中维护 position (位置),以及允许 position 发生改变 。

WritableByteChannel : 使通道允许对字节进行写操作 。

实现类:

AbstractInterruptibleChannel : 是提供了 一个可以被中断的通道基本实现类 。

AbstractSelectableChannel : 

AsynchronousFileChannel : 

AsynchronousServerSocketChannel : 

AsynchronousSocketChannel : 

DatagramChannel : 

FileChanne : 读取 、写入、映射和操作文件的通道。 该通道永远是阻塞 的操作 。

Pipe.SinkChannel : 

Pipe.SourceChannel : 

SelectableChannel : 

ServerSocketChannel : 

SocketChannel : 

猜你喜欢

转载自blog.csdn.net/zhanglong_4444/article/details/88963764
今日推荐