Java NIO 服务端套接字管道,原文地址:http://tutorials.jenkov.com/java-nio/server-socket-channel.html
Java NIO 中的服务端套接字管道可以用于监听接入的 TCP 网络连接,就像Java 标准网络编程里的服务端套接字一样。服务端套接字管道类在包 java.nio.channels
中。
下面是一个使用小例子:
打开一个服务端套接字管道
你可以通过调用 ServerSocketChannel.open()
方法来开启一个服务端套接字管道。就像下面这样:
关闭一个服务端套接字管道
你可以通过调用 ServerSocketChannel.close()
方法来关闭一个服务端套接字管道。就像下面这样:
监听接入的连接
服务端套接字管道通过调用 ServerSocketChannel.accept()
方法来监听接入的网络连接。当 accept()
方法返回时,它将返回一个请求连接的套接字管道。因此,accept()
方法会阻塞直到有一个连接接入。
因为你一般不会只监听一个连接请求,所以你会在一个 while
循环中调用 accept()
方法。正如下面这样:
当然你更可能会在 while
循环上设置循环停止条件而不是设置 true
。
非阻塞模式
服务端套接字管道可以被设置为非阻塞模式。在非阻塞模式下,accept()
方法会立即返回,并且大多数情况下还有没请求的连接,所以其返回值为 null。因此你必须手动检测套接字管道是否为 null。下面是使用小例子: