|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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 错误
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |