Java NIO SocketChannel

17 Mar 2025 | 阅读 2 分钟

Java NIO SocketChannel 用于将通道连接到 TCP (传输控制协议) 网络套接字。它相当于网络编程中使用的 Java 网络套接字。

Java NIO 中创建 SocketChannel 有两种方法

  • 当服务器端的 ServerSocketChannel 接收到传入连接时,可以创建它。
  • 我们可以打开一个 SocketChannel 并使用互联网与任何服务器连接。

让我们看看使用 Selector 进行 SocketChannel 客户端-服务器通信的框图

Java Nio tutorial15

关闭 SocketChannel

执行完所有操作后,我们可以通过调用 SocketChannel.close() 方法来关闭 SocketChannel。

用于关闭套接字通道的语法是


打开 SocketChannel

我们可以通过调用 SocketChannel.Open() 方法来打开一个 SocketChannel。

用于打开套接字通道的语法是


从 SocketChannel 读取

为了从 SocketChannel 读取数据,我们调用 read() 方法之一。

让我们看看从 SocketChannel 读取数据的示例

首先分配缓冲区。从 SocketChannel 读取的数据存储在缓冲区中。

其次,我们调用 SocketChannel.read() 方法,它将数据从 SocketChannel 读取到缓冲区中。read() 方法返回的整数值表示写入缓冲区的字节数。


向 SocketChannel 写入

为了向 SocketChannel 写入数据,使用了 SocketChannel.write() 方法,它将缓冲区作为参数。

让我们看看向 SocketChannel 写入数据的示例

SocketChannel.write() 方法在 while 循环中使用,因为 write() 方法写入 SocketChannel 的字节数是未知的,因此我们重复 write() 方法,直到缓冲区没有更多可写入的字节为止。