public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel
服务器套接字通道是通过调用该类的open
方法创建。这是不可能创造一个任意一个通道,预先存在的ServerSocket
。一个新创建的服务器套接字通道是打开的,但尚未绑定。试图调用一个绑定服务器套接字通道accept
方法会导致NotYetBoundException
被。服务器套接字通道可以通过调用这个类的一个定义的bind
方法结合。
套接字选项的配置使用setOption
方法。服务器套接字通道支持以下选项:
附加(具体实施)选项也可以支持。
Option Name 描述 SO_RCVBUF
The size of the socket receive buffer SO_REUSEADDR
Re-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, register
register
begin, close, end, isOpen
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getOption, supportedOptions
protected 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.