java.nio.channels
类 ServerSocketChannel
java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
java.nio.channels.ServerSocketChannel
所有已实现的接口:
-
Closeable, Channel, InterruptibleChannel
public abstract class ServerSocketChannel
extends AbstractSelectableChannel
针对面向流的侦听套接字的可选择通道。
服务器套接字通道不是侦听网络套接字的完整抽象。必须通过调用 socket 方法所获得的关联 ServerSocket 对象来完成对套接字选项的绑定和操作。不可能为任意的已有服务器套接字创建通道,也不可能指定与服务器套接字通道关联的服务器套接字所使用的 SocketImpl 对象。
通过调用此类的 open 方法创建服务器套接字通道。新创建的服务器套接字通道已打开,但尚未绑定。试图调用未绑定的服务器套接字通道的 accept 方法会导致抛出 NotYetBoundException。可通过调用相关服务器套接字的某个 bind 方法来绑定服务器套接字通道。
多个并发线程可安全地使用服务器套接字通道。
从以下版本开始:
-
1.4
构造方法摘要 protected
ServerSocketChannel(SelectorProvider provider)
初始化此类的一个新实例。
方法摘要 abstract SocketChannel
accept()
接受到此通道套接字的连接。static ServerSocketChannel
open()
打开服务器套接字通道。abstract ServerSocket
socket()
获取与此通道关联的服务器套接字。 int
validOps()
返回一个操作集,标识此通道所支持的操作。
从类 java.nio.channels.spi.AbstractSelectableChannel 继承的方法 blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
从类 java.nio.channels.SelectableChannel 继承的方法 register
从类 java.nio.channels.spi.AbstractInterruptibleChannel 继承的方法 begin, close, end, isOpen
从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口 java.nio.channels.Channel 继承的方法 close, isOpen
构造方法详细信息
ServerSocketChannel
protected ServerSocketChannel(SelectorProvider provider)
-
初始化此类的一个新实例。
方法详细信息
open
public static ServerSocketChannel open()
throws IOException
-
打开服务器套接字通道。
通过调用系统级默认 SelectorProvider 对象的 openServerSocketChannel 方法来创建新的通道。
新通道的套接字最初是未绑定的;可以接受连接之前,必须通过它的某个套接字的 bind 方法将其绑定到具体的地址。
-
返回:
-
新的套接字通道
抛出:
-
IOException
- 如果发生 I/O 错误
validOps
public final int validOps()
-
返回一个操作集,标识此通道所支持的操作。
服务器套接字通道仅支持接受新的连接,所以此方法返回 SelectionKey.OP_ACCEPT。
-
指定者:
-
类
SelectableChannel
中的 validOps
-
返回:
-
有效操作集
socket
public abstract ServerSocket socket()
-
获取与此通道关联的服务器套接字。
返回的对象不会声明任何在 ServerSocket 类中未声明的公共方法。
-
返回:
-
与此通道关联的服务器套接字
accept
public abstract SocketChannel accept()
throws IOException
-
接受到此通道套接字的连接。
如果此通道处于非阻塞模式,那么在不存在挂起的连接时,此方法将直接返回 null。否则,在新的连接可用或者发生 I/O 错误之前会无限期地阻塞它。
不管此通道的阻塞模式如何,此方法返回的套接字通道(如果有)将处于阻塞模式。
此方法执行的安全检查与 ServerSocket 类的 accept 方法执行的安全检查完全相同。也就是说,如果已安装了安全管理器,则对于每个新的连接,此方法都会验证安全管理器的 checkAccept 方法是否允许使用该连接的远程端点的地址和端口号。
-
返回:
-
用于新连接的套接字通道,或者如果此通道处于非阻塞模式并且没有要接受的可用连接,则返回 null
抛出:
-
ClosedChannelException
- 如果此通道已关闭
-
AsynchronousCloseException
- 如果正在进行接受操作时另一个线程关闭了此通道
-
ClosedByInterruptException
- 如果正在进行接受操作时另一个线程中断了当前线程,因此关闭了该通道并将当前线程的状态设置为中断
-
NotYetBoundException
- 如果尚未绑定此通道的套接字
-
SecurityException
- 如果已安装安全管理器并且它不允许对新连接的远程端点进行访问
-
IOException
- 如果发生其他 I/O 错误
java.nio.channels
类 ServerSocketChannel
java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
java.nio.channels.ServerSocketChannel
所有已实现的接口:
-
Closeable, Channel, InterruptibleChannel
public abstract class ServerSocketChannel
extends AbstractSelectableChannel
针对面向流的侦听套接字的可选择通道。
服务器套接字通道不是侦听网络套接字的完整抽象。必须通过调用 socket 方法所获得的关联 ServerSocket 对象来完成对套接字选项的绑定和操作。不可能为任意的已有服务器套接字创建通道,也不可能指定与服务器套接字通道关联的服务器套接字所使用的 SocketImpl 对象。
通过调用此类的 open 方法创建服务器套接字通道。新创建的服务器套接字通道已打开,但尚未绑定。试图调用未绑定的服务器套接字通道的 accept 方法会导致抛出 NotYetBoundException。可通过调用相关服务器套接字的某个 bind 方法来绑定服务器套接字通道。
多个并发线程可安全地使用服务器套接字通道。
从以下版本开始:
-
1.4
构造方法摘要 protected
ServerSocketChannel(SelectorProvider provider)
初始化此类的一个新实例。
方法摘要 abstract SocketChannel
accept()
接受到此通道套接字的连接。static ServerSocketChannel
open()
打开服务器套接字通道。abstract ServerSocket
socket()
获取与此通道关联的服务器套接字。 int
validOps()
返回一个操作集,标识此通道所支持的操作。
从类 java.nio.channels.spi.AbstractSelectableChannel 继承的方法 blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
从类 java.nio.channels.SelectableChannel 继承的方法 register
从类 java.nio.channels.spi.AbstractInterruptibleChannel 继承的方法 begin, close, end, isOpen
从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口 java.nio.channels.Channel 继承的方法 close, isOpen
构造方法详细信息
ServerSocketChannel
protected ServerSocketChannel(SelectorProvider provider)
-
初始化此类的一个新实例。
方法详细信息
open
public static ServerSocketChannel open()
throws IOException
-
打开服务器套接字通道。
通过调用系统级默认 SelectorProvider 对象的 openServerSocketChannel 方法来创建新的通道。
新通道的套接字最初是未绑定的;可以接受连接之前,必须通过它的某个套接字的 bind 方法将其绑定到具体的地址。
-
返回:
-
新的套接字通道
抛出:
-
IOException
- 如果发生 I/O 错误
validOps
public final int validOps()
-
返回一个操作集,标识此通道所支持的操作。
服务器套接字通道仅支持接受新的连接,所以此方法返回 SelectionKey.OP_ACCEPT。
-
指定者:
-
类
SelectableChannel
中的 validOps
-
返回:
-
有效操作集
socket
public abstract ServerSocket socket()
-
获取与此通道关联的服务器套接字。
返回的对象不会声明任何在 ServerSocket 类中未声明的公共方法。
-
返回:
-
与此通道关联的服务器套接字
accept
public abstract SocketChannel accept()
throws IOException
-
接受到此通道套接字的连接。
如果此通道处于非阻塞模式,那么在不存在挂起的连接时,此方法将直接返回 null。否则,在新的连接可用或者发生 I/O 错误之前会无限期地阻塞它。
不管此通道的阻塞模式如何,此方法返回的套接字通道(如果有)将处于阻塞模式。
此方法执行的安全检查与 ServerSocket 类的 accept 方法执行的安全检查完全相同。也就是说,如果已安装了安全管理器,则对于每个新的连接,此方法都会验证安全管理器的 checkAccept 方法是否允许使用该连接的远程端点的地址和端口号。
-
返回:
-
用于新连接的套接字通道,或者如果此通道处于非阻塞模式并且没有要接受的可用连接,则返回 null
抛出:
-
ClosedChannelException
- 如果此通道已关闭
-
AsynchronousCloseException
- 如果正在进行接受操作时另一个线程关闭了此通道
-
ClosedByInterruptException
- 如果正在进行接受操作时另一个线程中断了当前线程,因此关闭了该通道并将当前线程的状态设置为中断
-
NotYetBoundException
- 如果尚未绑定此通道的套接字
-
SecurityException
- 如果已安装安全管理器并且它不允许对新连接的远程端点进行访问
-
IOException
- 如果发生其他 I/O 错误
java.nio.channels
类 ServerSocketChannel
java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
java.nio.channels.ServerSocketChannel
-
所有已实现的接口:
- Closeable, Channel, InterruptibleChannel
public abstract class ServerSocketChannel extends AbstractSelectableChannel
针对面向流的侦听套接字的可选择通道。
服务器套接字通道不是侦听网络套接字的完整抽象。必须通过调用 socket 方法所获得的关联 ServerSocket 对象来完成对套接字选项的绑定和操作。不可能为任意的已有服务器套接字创建通道,也不可能指定与服务器套接字通道关联的服务器套接字所使用的 SocketImpl 对象。
通过调用此类的 open 方法创建服务器套接字通道。新创建的服务器套接字通道已打开,但尚未绑定。试图调用未绑定的服务器套接字通道的 accept 方法会导致抛出 NotYetBoundException。可通过调用相关服务器套接字的某个 bind 方法来绑定服务器套接字通道。
多个并发线程可安全地使用服务器套接字通道。
-
从以下版本开始:
- 1.4
构造方法摘要 | |
---|---|
protected | ServerSocketChannel(SelectorProvider provider) 初始化此类的一个新实例。 |
方法摘要 | |
---|---|
abstract SocketChannel | accept() 接受到此通道套接字的连接。 |
static ServerSocketChannel | open() 打开服务器套接字通道。 |
abstract ServerSocket | socket() 获取与此通道关联的服务器套接字。 |
int | validOps() 返回一个操作集,标识此通道所支持的操作。 |
从类 java.nio.channels.spi.AbstractSelectableChannel 继承的方法 |
---|
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register |
从类 java.nio.channels.SelectableChannel 继承的方法 |
---|
register |
从类 java.nio.channels.spi.AbstractInterruptibleChannel 继承的方法 |
---|
begin, close, end, isOpen |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从接口 java.nio.channels.Channel 继承的方法 |
---|
close, isOpen |
构造方法详细信息 |
---|
ServerSocketChannel
protected ServerSocketChannel(SelectorProvider provider)
- 初始化此类的一个新实例。
方法详细信息 |
---|
open
public static ServerSocketChannel open()
throws IOException
-
打开服务器套接字通道。
通过调用系统级默认 SelectorProvider 对象的 openServerSocketChannel 方法来创建新的通道。
新通道的套接字最初是未绑定的;可以接受连接之前,必须通过它的某个套接字的 bind 方法将其绑定到具体的地址。
-
-
返回:
- 新的套接字通道 抛出:
-
IOException
- 如果发生 I/O 错误
validOps
public final int validOps()
-
返回一个操作集,标识此通道所支持的操作。
服务器套接字通道仅支持接受新的连接,所以此方法返回 SelectionKey.OP_ACCEPT。
-
-
指定者:
-
类
SelectableChannel
中的validOps
-
类
-
-
返回:
- 有效操作集
socket
public abstract ServerSocket socket()
-
获取与此通道关联的服务器套接字。
返回的对象不会声明任何在 ServerSocket 类中未声明的公共方法。
-
-
返回:
- 与此通道关联的服务器套接字
accept
public abstract SocketChannel accept()
throws IOException
-
接受到此通道套接字的连接。
如果此通道处于非阻塞模式,那么在不存在挂起的连接时,此方法将直接返回 null。否则,在新的连接可用或者发生 I/O 错误之前会无限期地阻塞它。
不管此通道的阻塞模式如何,此方法返回的套接字通道(如果有)将处于阻塞模式。
此方法执行的安全检查与 ServerSocket 类的 accept 方法执行的安全检查完全相同。也就是说,如果已安装了安全管理器,则对于每个新的连接,此方法都会验证安全管理器的 checkAccept 方法是否允许使用该连接的远程端点的地址和端口号。
-
-
返回:
- 用于新连接的套接字通道,或者如果此通道处于非阻塞模式并且没有要接受的可用连接,则返回 null 抛出:
-
ClosedChannelException
- 如果此通道已关闭 -
AsynchronousCloseException
- 如果正在进行接受操作时另一个线程关闭了此通道 -
ClosedByInterruptException
- 如果正在进行接受操作时另一个线程中断了当前线程,因此关闭了该通道并将当前线程的状态设置为中断 -
NotYetBoundException
- 如果尚未绑定此通道的套接字 -
SecurityException
- 如果已安装安全管理器并且它不允许对新连接的远程端点进行访问 -
IOException
- 如果发生其他 I/O 错误