JavaTM 2 Platform
Standard Ed. 6

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) 協議的安全伺服器Socket。

此類別的實例通常使用 SSLServerSocketFactory 來創建。SSLServerSocket 的主要功能是通過接受連接來創建 SSLSocket

SSLServerSocket 套件含了一些狀態資料,這些資料在創建Socket時由 SSLSocket 繼承。它們包括啟用的密碼套件和協議、客戶端驗證是否必需,以及創建的Socket應該以客戶端網要還是伺服器網要開始連繫交換。可以通過調用適當的方法覆寫由創建的 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 Session可以通過此伺服器Socket創建的Socket建立,則返回 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 Session是否可以通過此伺服器Socket創建的Socket建立。
abstract  void setNeedClientAuth(boolean need)
          控制接受的伺服器網要 SSLSocket 是否將在開始時配置為要求 客戶端驗證。
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 伺服器Socket。

拋出:
IOException - 如果創建Socket時發生 I/O 錯誤

SSLServerSocket

protected SSLServerSocket(int port)
                   throws IOException
僅供子類別使用。

使用預設的驗證上下文在埠號上創建 TCP 伺服器Socket。連接 backlog 預設為最多可有五十個連接排隊,超過此數,系統將拒絕新的連接請求。

參數:
port - 偵聽的埠號
拋出:
IOException - 當創建Socket時出現 I/O 錯誤

SSLServerSocket

protected SSLServerSocket(int port,
                          int backlog)
                   throws IOException
僅供子類別使用。

使用預設的驗證上下文和指定的連接 backlog 在埠號上創建 TCP 伺服器Socket。

參數:
port - 偵聽的埠號號
backlog - 在系統應該開始拒絕新的請求前可以掛起的連接數
拋出:
IOException - 如果創建Socket時出現 I/O 錯誤

SSLServerSocket

protected SSLServerSocket(int port,
                          int backlog,
                          InetAddress address)
                   throws IOException
僅供子類別使用。

使用預設的驗證上下文、指定的連接 backlog 和指定的網路介面在埠號上創建 TCP 伺服器Socket。此建構子用在多宿主機(像那些用作防火牆或路由器的主機)上以控制通過哪一個介面提供網路服務。

參數:
port - 偵聽的埠號號
backlog - 在系統應該開始拒絕新的請求前可以掛起的連接數
address - 網路介面的位址,通過此位址接受連接
拋出:
IOException - 如果創建Socket時出現 I/O 錯誤
方法詳細資訊

getEnabledCipherSuites

public abstract String[] getEnabledCipherSuites()
返回當前被啟用以供新接受的連接使用的密碼套件列表。

如果沒有顯式修改此列表,則系統提供的預設值在所有啟用的密碼套件中保證最低的服務質量。

實際上不使用啟用的密碼套件有多個原因。例如: 伺服器Socket可能沒有適當的私鑰供它使用或者密碼套件可能是匿名的,阻止使用客戶端驗證,而伺服器Socket已經被告知需要那種驗證。

返回:
啟用的密碼套件的陣列
另請參見:
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)
控制接受的伺服器網要 SSLSocket 是否將在開始時配置為要求 客戶端驗證。

Socket的客戶端驗證設置是下面的其中之一:

setWantClientAuth(boolean) 不同,如果設置了接受的Socket的選項並且客戶端選擇不提供關於自己的驗證資訊,協商將會停止且連接將被終止

調用此方法會覆寫由此方法或 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 是否將在開始時配置為請求 客戶端驗證。

Socket的客戶端驗證設置是下面的其中之一:

setNeedClientAuth(boolean) 不同,如果設置了接受的Socket的選項並且客戶端選擇不提供關於自己的驗證資訊,則協商將會繼續

調用此方法會覆寫由此方法或 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 客戶端在獲得伺服器Socket的同時偵聽是否有來自伺服器的反向連接。FTP 客戶端將使用 "client" 網要的 SSLServerSocket 來接受反向的連接,而 FTP 伺服器使用禁止 "client" 網要的 SSLSocket 來啟動連接。在聯絡期間,可以重用已存在的 SSL Session。

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 Session是否可以通過此伺服器Socket創建的Socket建立。

accept() 返回的 SSLSocket 繼承此設置。

參數:
flag - 為 true 時指示可以創建Session,這是預設的;為 false 時指示必須恢復現有的Session。
另請參見:
getEnableSessionCreation()

getEnableSessionCreation

public abstract boolean getEnableSessionCreation()
如果新 SSL Session可以通過此伺服器Socket創建的Socket建立,則返回 true。

返回:
為 true 時指示可以創建Session,這是預設的;為 false 時指示必須恢復現有的Session。
另請參見:
setEnableSessionCreation(boolean)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only