站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

SSLServerSocket (Java 2 Platform SE 5.0) - JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

JavaTM 2 Platform
Standard Ed. 5.0

javax.net.ssl
类 SSLServerSocket

java.lang.Object
  继承者 java.net.ServerSocket
      继承者 javax.net.ssl.SSLServerSocket

public abstract class SSLServerSocket
extends ServerSocket

此类扩展了 ServerSocket 并且提供使用像 Secure Sockets Layer (SSL) 或 Transport Layer Security (TLS) 协议的安全套接字。

此类的实例通常使用 SSLServerSocketFactory 来创建。SSLServerSocket 的主要功能是通过接受连接来创建 SSLSocket

SSLServerSocket 包含了一些状态数据,这些数据在创建套接字时由 SSLSocket 继承。它们包括启用密码套件和协议、客户端身份验证是否必需的,以及创建的套接字应该以客户端还是服务器模式开始联络。SSLSocket 继承的状态可以通过调用适当的方法重写。

从以下版本开始:
1.4
另请参见:
ServerSocket, SSLSocket

构造方法摘要
protected SSLServerSocket()
          仅供子类使用。
protected SSLServerSocket(int port)
          仅供子类使用。
protected SSLServerSocket(int port, int backlog)
          仅供子类使用。
protected SSLServerSocket(int port, int backlog, InetAddress address)
          仅供子类使用。
 
方法摘要
abstract  String[] getEnabledCipherSuites()
          返回供当前新接受启用的密码套件的列表。
abstract  String[] getEnabledProtocols()
          返回当前新接受的连接启用的协议的名称。
abstract  boolean getEnableSessionCreation()
          如果新 SSL 会话可以通过此服务器套接字创建的套接字建立,则返回 true。
abstract  boolean getNeedClientAuth()
          如果新 accept 的服务器模式的 SSLSocket 要求 客户端身份验证,则返回 true。
abstract  String[] getSupportedCipherSuites()
          返回可以在 SSL 连接上启用的密码套件的名称。
abstract  String[] getSupportedProtocols()
          返回可以启用的协议的名称。
abstract  boolean getUseClientMode()
          如果接受的连接处于 SSL 客户端模式,则返回 true。
abstract  boolean getWantClientAuth()
          如果新接受的服务器模式的连接请求 客户端身份验证,则返回 true。
abstract  void setEnabledCipherSuites(String[] suites)
          把密码套件设置为启用的以供接受的连接使用。
abstract  void setEnabledProtocols(String[] protocols)
          控制哪个特定的协议允许接受的连接使用。
abstract  void setEnableSessionCreation(boolean flag)
          控制新 SSL 会话是否可以通过此服务器套接字创建的套接字建立。
abstract  void setNeedClientAuth(boolean need)
          控制 accept 服务器模式的 SSLSockets 是否将在开始时配置为要求 客户端身份验证。
abstract  void setUseClientMode(boolean mode)
          控制接受的连接是以(默认的)SSL 服务器模式还是在 SSL 客户端模式工作。
abstract  void setWantClientAuth(boolean want)
          控制 accept 服务器模式的 SSLSockets 是否将在开始时配置为请求 客户端身份验证。
 
从类 java.net.ServerSocket 继承的方法
accept, bind, bind, close, getChannel, getInetAddress, getLocalPort, getLocalSocketAddress, getReceiveBufferSize, getReuseAddress, getSoTimeout, implAccept, isBound, isClosed, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSocketFactory, setSoTimeout, toString
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

SSLServerSocket

protected SSLServerSocket()
                   throws IOException
仅供子类使用。

使用默认的身份验证上下文创建未绑定的 TCP 服务器套接字。

抛出:
IOException - 如果创建套接字时发生 I/O 错误

SSLServerSocket

protected SSLServerSocket(int port)
                   throws IOException
仅供子类使用。

使用默认的身份验证上下文在端口上创建 TCP 服务器套接字。连接的 backlog 默认为在系统拒绝新的连接请求前能有五十个连接排队。

参数:
port - 侦听的端口
抛出:
IOException - 当创建套接字时出现 I/O 错误

SSLServerSocket

protected SSLServerSocket(int port,
                          int backlog)
                   throws IOException
仅供子类使用。

使用默认的身份验证上下文和指定的连接 backlog 在端口上创建 TCP 服务器套接字。

参数:
port - 侦听的端口号
backlog - 在系统应该开始拒绝新的请求前可以挂起的连接数
抛出:
IOException - 如果创建套接字时出现 I/O 错误

SSLServerSocket

protected SSLServerSocket(int port,
                          int backlog,
                          InetAddress address)
                   throws IOException
仅供子类使用。

使用默认的身份验证上下文、指定的连接 backlog 和指定的网络接口在端口上创建 TCP 服务器套接字。此构造方法用在多穴主机(像那些用作防火墙或路由器的主机)上以控制通过哪一个接口提供网络服务。

参数:
port - 侦听的端口号
backlog - 在系统应该开始拒绝新的请求前可以挂起的连接数
address - 网络接口的地址,通过此地址接受连接
抛出:
IOException - 如果创建套接字时出现 I/O 错误
方法详细信息

getEnabledCipherSuites

public abstract String[] getEnabledCipherSuites()
返回供当前新接受启用的密码套件的列表。

如果没有显式修改此列表,则系统提供的默认值在所有启用的密码套件中保证为最低的服务质量。

实际上不使用启用的密码套件有多个原因。例如: 服务器套接字可能没有适当的私钥供它使用或者密码套件可能是匿名的,阻止使用客户端身份验证,而服务器套接字已经被告知需要那种身份验证。

返回:
启用的密码套件的数组
另请参见:
getSupportedCipherSuites(), setEnabledCipherSuites(String [])

setEnabledCipherSuites

public abstract void setEnabledCipherSuites(String[] suites)
把密码套件设置为启用的以供接受的连接使用。

密码套件必须已经使用 getSupportedCipherSuites() 作为支持的密码套件被列表。在成功调用此方法之后,仅启用了在 suites 参数中列出的套件以便使用。

需要身份验证信息而这些信息在此 ServerSocket 的身份验证上下文中不可用时,套件在任何情况下都不能使用,即使它们被启用。

accept() 返回的 SSLSocket 继承此设置。

参数:
suites - 要启用的所有密码套件名称
抛出:
IllegalArgumentException - 当一个或多个由参数命名的密码套件不被支持时,或参数为 null 时。
另请参见:
getSupportedCipherSuites(), getEnabledCipherSuites()

getSupportedCipherSuites

public abstract String[] getSupportedCipherSuites()
返回可以在 SSL 连接上启用的密码套件的名称。

通常,因为此列表可能包括无法满足默认服务质量要求的密码套件,所以默认情况下实际启动的是这些密码套件的子集。这种密码套件在专门的应用程序中才能有用。

返回:
密码套件名称的数组
另请参见:
getEnabledCipherSuites(), setEnabledCipherSuites(String [])

getSupportedProtocols

public abstract String[] getSupportedProtocols()
返回可以启用的协议的名称。

返回:
支持的协议名称的数组
另请参见:
getEnabledProtocols(), setEnabledProtocols(String [])

getEnabledProtocols

public abstract String[] getEnabledProtocols()
返回当前新接受的连接启用的协议的名称。

返回:
协议名称的数组
另请参见:
getSupportedProtocols(), setEnabledProtocols(String [])

setEnabledProtocols

public abstract void setEnabledProtocols(String[] protocols)
控制哪个特定的协议允许接受的连接使用。

该协议必须已经由 getSupportedProtocols() 将其作为受支持的协议列出。在成功调用此方法之后,仅启用了在 protocols 参数中列出的协议以便使用。

accept() 返回的 SSLSocket 继承此设置。

参数:
protocols - 要启用的所有协议的名称。
抛出:
IllegalArgumentException - 当一个或多个由参数命名的协议不受支持时,或 protocols 参数为 null时。
另请参见:
getEnabledProtocols(), getSupportedProtocols()

setNeedClientAuth

public abstract void setNeedClientAuth(boolean need)
控制 accept 服务器模式的 SSLSockets 是否将在开始时配置为要求 客户端身份验证。

套接字的客户端身份验证设置是下面的其中之一:

  • 必需的客户端身份验证
  • 请求的客户端身份验证
  • 不需要客户端身份验证

setWantClientAuth(boolean) 不同,如果设置了接受的套接字的选项并且客户端选择不提供关于自己的身份验证信息,协商将会停止且连接将被终止

调用此方法会重写由此方法或 setWantClientAuth(boolean) 以前所做的任何设置。

最初继承的设置可以通过调用 SSLSocket.setNeedClientAuth(boolean)SSLSocket.setWantClientAuth(boolean) 来重写。

参数:
need - 如果要求进行客户端身份验证,则设置为 true;如果不需要客户端身份验证,则设置为 false。
另请参见:
getNeedClientAuth(), setWantClientAuth(boolean), getWantClientAuth(), setUseClientMode(boolean)

getNeedClientAuth

public abstract boolean getNeedClientAuth()
如果新 accept 的服务器模式的 SSLSocket 要求 客户端身份验证,则返回 true。

最初继承的设置可以通过调用 SSLSocket.setNeedClientAuth(boolean)SSLSocket.setWantClientAuth(boolean) 来重写。

返回:
如果要求进行客户端身份验证,返回 true;如果不需要客户端身份验证,则返回 false。
另请参见:
setNeedClientAuth(boolean), setWantClientAuth(boolean), getWantClientAuth(), setUseClientMode(boolean)

setWantClientAuth

public abstract void setWantClientAuth(boolean want)
控制 accept 服务器模式的 SSLSockets 是否将在开始时配置为请求 客户端身份验证。

套接字的客户端身份验证设置是下面的其中之一:

  • 必需的客户端身份验证
  • 请求的客户端身份验证
  • 不需要客户端身份验证

setNeedClientAuth(boolean) 不同,如果设置了接受的套接字的选项并且客户端选择不提供关于自己的身份验证信息,则协商将会继续

调用此方法会重写由此方法或 setNeedClientAuth(boolean) 以前所做的任何设置。

最初继承的设置可以通过调用 SSLSocket.setNeedClientAuth(boolean)SSLSocket.setWantClientAuth(boolean) 来重写。

参数:
want - 如果请求进行客户端身份验证,则设置为 true;如果不需要客户端身份验证,则设置为 false。
另请参见:
getWantClientAuth(), setNeedClientAuth(boolean), getNeedClientAuth(), setUseClientMode(boolean)

getWantClientAuth

public abstract boolean getWantClientAuth()
如果新接受的服务器模式的连接请求 客户端身份验证,则返回 true。

最初继承的设置可以通过调用 SSLSocket.setNeedClientAuth(boolean)SSLSocket.setWantClientAuth(boolean) 来重写。

返回:
如果请求进行客户端身份验证,则返回 true;如果不需要客户端身份验证,则返回 false。
另请参见:
setWantClientAuth(boolean), setNeedClientAuth(boolean), getNeedClientAuth(), setUseClientMode(boolean)

setUseClientMode

public abstract void setUseClientMode(boolean mode)
控制接受的连接是以(默认的)SSL 服务器模式还是在 SSL 客户端模式工作。

服务器通常对其自己进行身份验证,不要求客户端也这么做。

在很少的情况下,TCP 服务器需要在新接受的连接上充当 SSL 客户端模式。例如,FTP 获得服务器套接字同时侦听来自服务器的反向连接。FTP 客户端将使用 "client" 模式的 SSLServerSocket 来接受反向的连接,而 FTP 服务器使用禁止 "client" 模式的 SSLSocket 来启动连接。在联络期间,可以重用已存在的 SSL 会话。

accept() 返回的 SSLSocket 继承此设置。

参数:
mode - 如果新接受的连接应该使用 SSL 客户端模式,则此参数为 true。
另请参见:
getUseClientMode()

getUseClientMode

public abstract boolean getUseClientMode()
如果接受的连接处于 SSL 客户端模式,则返回 true。

返回:
如果连接应该使用 SSL 客户端模式,则返回 true。
另请参见:
setUseClientMode(boolean)

setEnableSessionCreation

public abstract void setEnableSessionCreation(boolean flag)
控制新 SSL 会话是否可以通过此服务器套接字创建的套接字建立。

accept() 返回的 SSLSocket 继承此设置。

参数:
flag - 为 true 时指示可以创建会话,这是默认的;为 false 时指示必须恢复现有的会话。
另请参见:
getEnableSessionCreation()

getEnableSessionCreation

public abstract boolean getEnableSessionCreation()
如果新 SSL 会话可以通过此服务器套接字创建的套接字建立,则返回 true。

返回:
为 true 时指示可以创建会话,这是默认的;为 false 时指示必须恢复现有的会话。
另请参见:
setEnableSessionCreation(boolean)

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策