public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel
服务器套接字通道是通过调用该类的open方法创建。这是不可能创造一个任意一个通道,预先存在的ServerSocket。一个新创建的服务器套接字通道是打开的,但尚未绑定。试图调用一个绑定服务器套接字通道accept方法会导致NotYetBoundException被。服务器套接字通道可以通过调用这个类的一个定义的bind方法结合。
套接字选项的配置使用setOption方法。服务器套接字通道支持以下选项:
附加(具体实施)选项也可以支持。
Option Name 描述 SO_RCVBUFThe size of the socket receive buffer SO_REUSEADDRRe-use address
服务器套接字通道是安全的,用于多个并发线程。
| Modifier | Constructor and Description |
|---|---|
protected |
ServerSocketChannel(SelectorProvider provider)
初始化该类的一个新实例。
|
| Modifier and Type | Method and Description |
|---|---|
abstract SocketChannel |
accept()
接受这个通道的套接字的连接。
|
ServerSocketChannel |
bind(SocketAddress local)
结合通道的插座到本地地址和配置套接字监听连接。
|
abstract ServerSocketChannel |
bind(SocketAddress local, int backlog)
结合通道的插座到本地地址和配置套接字监听连接。
|
abstract SocketAddress |
getLocalAddress()
返回此通道的套接字绑定到的套接字地址。
|
static ServerSocketChannel |
open()
打开服务器套接字通道。
|
abstract <T> ServerSocketChannel |
setOption(SocketOption<T> name, T value)
设置套接字选项的值。
|
abstract ServerSocket |
socket()
检索与此通道关联的服务器套接字。
|
int |
validOps()
返回一个确定此通道支持的操作的操作集。
|
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, registerregisterbegin, close, end, isOpenclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetOption, supportedOptionsprotected ServerSocketChannel(SelectorProvider provider)
provider -供应商,创造了这个频道
public static ServerSocketChannel open() throws IOException
新的通道是由调用openServerSocketChannel方法的默认SelectorProvider对象。
新航道的插座是最初的自由;它必须绑定到一个特定的地址通过一个插座的bind方法之前连接可以接受。
IOException如果I/O错误发生
public final int validOps()
服务器套接字通道只支持接受新的连接,所以此方法返回SelectionKey.OP_ACCEPT。
validOps 方法重写,继承类
SelectableChannel
public final ServerSocketChannel bind(SocketAddress local) throws IOException
此方法的调用相当于下面的:
bind(local, 0);
bind 接口
NetworkChannel
local -绑定套接字的本地地址,或
null绑定到一个套接字地址的自动分配
AlreadyBoundException如果插座已绑定
UnsupportedAddressTypeException如果给定的地址的类型不支持
ClosedChannelException如果通道关闭
IOException -如果其他I/O错误发生
SecurityException -如果一个安全管理已安装的
checkListen否认操作方法
NetworkChannel.getLocalAddress()
public abstract ServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
此方法用于建立套接字和本地地址之间的关联。一旦一个关联建立,那么套接字保持绑定,直到通道关闭。
的backlog参数是最大数量的挂起连接在插座上。它的确切的语义是实现特定的。特别是,一个实现可以处以最大长度或可以选择忽略参数的根。如果backlog参数的值0,或负的值,然后执行特定的默认使用。
local -地址绑定套接字,或者
null绑定到一个套接字地址的自动分配
backlog -最大数量的挂起连接
AlreadyBoundException如果插座已绑定
UnsupportedAddressTypeException如果给定的地址的类型不支持
ClosedChannelException -如果这通道关闭
IOException -如果其他I/O错误发生
SecurityException -如果一个安全管理已安装的
checkListen否认操作方法
public abstract <T> ServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel
setOption 接口
NetworkChannel
T的套接字选项的值的类型
name的套接字选项
value -套接字选项的值。一个价值
null可能对于一些套接字选项的有效值。
UnsupportedOperationException如果套接字选项不支持这个频道
IllegalArgumentException -如果值不是此套接字选项的有效值
ClosedChannelException -如果这通道关闭
IOException如果I/O错误发生
StandardSocketOptions
public abstract ServerSocket socket()
返回的对象将不会宣布任何公共的方法不在ServerSocket类声明。
public abstract SocketChannel accept() throws IOException
如果这个渠道是非阻塞模式,那么这种方法将立即返回null如果没有挂起的连接。否则,它将阻塞无限期,直到一个新的连接可用或I / O错误发生。
该方法返回的套接字通道,如果有的话,将在阻塞模式,无论这个通道的阻塞模式。
该方法具有完全相同的安全检查的ServerSocket班accept方法。那就是,如果一个安全管理已安装,然后为每一个新的连接,这种方法验证地址和连接的远程端点的端口号由安全经理的checkAccept方法允许。
ClosedChannelException -如果这通道关闭
AsynchronousCloseException如果另一个线程关闭通道而接受手术的进展
ClosedByInterruptException如果另一个线程中断当前线程,而接受手术的进展,从而关闭通道和设置当前线程的中断状态
NotYetBoundException -如果这通道插座尚未绑定
SecurityException如果安全管理器已经安装,它不允许访问新连接的远程端点
IOException -如果其他I/O错误发生
public abstract SocketAddress getLocalAddress() throws IOException
在渠道bound到互联网协议的套接字地址然后从这个方法返回值的类型是InetSocketAddress。
如果存在安全管理器,它的checkConnect方法被调用的本地地址和-1作为它的参数看看操作是允许的。如果操作是不允许的,一个SocketAddress代表loopback地址和本地端口的套接字通道返回。
getLocalAddress 接口
NetworkChannel
SocketAddress,socket,或
SocketAddress代表回送地址如果由安全经理否认,或
null如果信道的插座是不受约束的
ClosedChannelException如果通道关闭
IOException如果I/O错误发生
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.