uTools-Manuals/docs/java/javax/net/ssl/SSLSocket.html

1093 lines
59 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
compact1, compact2, compact3
</div>
<div class="subTitle">
javax.net.ssl
</div>
<h2 class="title" title="Class SSLSocket">Class SSLSocket</h2>
</div><div class="contentContainer">
<ul class="inheritance">
<li><a href="../../../java/lang/Object.html" title="class in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../java/net/Socket.html" title="class in java.net">java.net.Socket</a></li>
<li>
<ul class="inheritance">
<li>javax.net.ssl.SSLSocket</li>
</ul> </li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>
All Implemented Interfaces:
</dt>
<dd>
<span><a href="../../../java/io/Closeable.html" title="java.io中的接口">Closeable</a> <a href="../../../java/lang/AutoCloseable.html" title="java.lang中的接口">AutoCloseable</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public abstract class <span class="typeNameLabel">SSLSocket</span>
extends <a href="../../../java/net/Socket.html" title="class in java.net">Socket</a></pre>
<div class="block">
<span>该类扩展了<code>Socket</code> s并使用诸如“安全套接字层”SSL或IETF“传输层安全”TLS协议之类的<code>Socket</code>来提供安全套接字。</span>
<p> <span>这样的套接字是普通流套接字但是它们在底层网络传输协议如TCP上增加了一层安全保护。</span> <span>这些保护包括:</span> </p>
<ul>
<li> <span><em>诚信保障</em></span> <span>SSL防止活动的窃听器修改消息。</span> </li>
<li> <span><em>认证</em></span> <span>在大多数模式下SSL提供对等体认证。</span> <span>服务器通常被认证,客户端可以根据服务器的要求进行身份验证。</span> </li>
<li> <span><em>保密(隐私保护)</em></span> <span>在大多数模式下SSL加密客户端和服务器之间发送的数据。</span> <span>这样可以保护数据的机密性,从而使被动窃听者不会看到诸如财务信息或者个人信息等敏感数据。</span> </li>
</ul>
<p> <span>这些类型的保护由“密码套件”指定“密码套件”是由给定SSL连接使用的加密算法的组合。</span> <span>在协商过程中,两个端点必须对两个环境中可用的密码同意。</span> <span>如果没有这样的套件则不能建立SSL连接不能交换任何数据。</span> </p>
<p> <span>所使用的密码套件是通过称为“握手”的协商过程建立的。</span> <span>此过程的目标是创建或重新加入“会话”,可以保护多个连接。</span> <span>握手完成后,您可以使用<em>getSession</em>方法访问会话属性。</span> <span>这种连接的初始握手可以通过以下三种方式之一启动:</span> </p>
<ul>
<li> <span>打电话<code>startHandshake</code>明确地开始握手,或</span> </li>
<li> <span>任何在此套接字上读取或写入应用程序数据的尝试都会导致隐式握手</span> </li>
<li> <span>如果没有当前有效的会话,则呼叫<code>getSession</code>尝试设置会话,并进行隐式握手。</span> </li>
</ul>
<p> <span>如果由于任何原因握手失败, <code>SSLSocket</code>关闭,不能再进行通信。</span> </p>
<p> <span>有两组密码套件,您需要知道何时管理密码套件:</span> </p>
<ul>
<li> <span><em>支持的</em>密码套件SSL实现支持的所有套件。</span> <span>此列表使用<em>getSupportedCipherSuites</em>报告。</span> </li>
<li> <span><em>启用的</em>密码套件可能少于全套支持的套件。</span> <span>该组使用<em>setEnabledCipherSuites</em>方法设置,并使用<em>getEnabledCipherSuites</em>方法进行查询。</span> <span>最初,将在启用最小建议配置的新套接字上启用一组默认密码套件。</span> </li>
</ul>
<p> <span>默认情况下,实现默认情况下,默认情况下仅启用验证服务器并提供机密性的密码套件。</span> <span>只有双方明确同意未经身份验证和/或非私有(未加密)通信,才能选择这样的密码。</span> </p>
<p> <span><code>SSLSocket</code>首次创建S没有握手是这样做的应用程序可能首先设置它们的通信首选项使用哪个密码套件套接字是否应该在客户端或服务器模式等等。然而安全总是被时间规定应用程序数据通过连接发送。</span> </p>
<p> <span>您可以注册接收握手完成的事件通知。</span> <span>这涉及到使用两个额外的类。</span> <span><em>HandshakeCompletedEvent</em>对象传递给<em>HandshakeCompletedListener任何</em>情况下这是由该API的用户注册。</span> <span><code>SSLSocket</code><code>SSLSocketFactory</code> s创建或由<code>accept</code>创建一个SSLServerSocket的<code>SSLServerSocket</code></span> </p>
<p> <span>SSL套接字必须选择在客户端或服务器模式下运行。</span> <span>这将决定谁开始握手过程,以及每一方应发送哪些消息。</span> <span>每个连接必须有一个客户端和一个服务器,否则握手将无法正常进行。</span> <span>一旦初始握手已经开始,即使执行重新协商,套接字也不能在客户端和服务器模式之间切换。</span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.4
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../java/net/Socket.html" title="java.net中的类"><code>Socket</code></a> <a href="../../../javax/net/ssl/SSLServerSocket.html" title="javax.net.ssl中的类"><code>SSLServerSocket</code></a> <a href="../../../javax/net/ssl/SSLSocketFactory.html" title="javax.net.ssl中的类"><code>SSLSocketFactory</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- --> </a> <h3>构造方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Constructor Summary table, listing constructors, and an explanation">
<caption>
<span>构造方法</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#SSLSocket--">SSLSocket</a></span>()</code>
<div class="block">
仅由子类使用。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#SSLSocket-java.net.InetAddress-int-">SSLSocket</a></span>(<a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> address, int port)</code>
<div class="block">
仅由子类使用。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#SSLSocket-java.net.InetAddress-int-java.net.InetAddress-int-">SSLSocket</a></span>(<a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> address, int port, <a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> clientAddress, int clientPort)</code>
<div class="block">
仅由子类使用。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#SSLSocket-java.lang.String-int-">SSLSocket</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> host, int port)</code>
<div class="block">
仅由子类使用。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#SSLSocket-java.lang.String-int-java.net.InetAddress-int-">SSLSocket</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> host, int port, <a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> clientAddress, int clientPort)</code>
<div class="block">
仅由子类使用。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t4"><span><a href="javascript:show(8);">具体的方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#addHandshakeCompletedListener-javax.net.ssl.HandshakeCompletedListener-">addHandshakeCompletedListener</a></span>(<a href="../../../javax/net/ssl/HandshakeCompletedListener.html" title="interface in javax.net.ssl">HandshakeCompletedListener</a> listener)</code>
<div class="block">
注册事件侦听器以接收SSL握手在此连接上已完成的通知。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getEnabledCipherSuites--">getEnabledCipherSuites</a></span>()</code>
<div class="block">
返回当前启用此SSL连接的SSL密码套件的名称。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getEnabledProtocols--">getEnabledProtocols</a></span>()</code>
<div class="block">
返回当前允许在此连接上使用的协议版本的名称。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getEnableSessionCreation--">getEnableSessionCreation</a></span>()</code>
<div class="block">
如果此套接字可能建立新的SSL会话则返回true。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code><a href="../../../javax/net/ssl/SSLSession.html" title="interface in javax.net.ssl">SSLSession</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getHandshakeSession--">getHandshakeSession</a></span>()</code>
<div class="block">
返回
<code>SSLSession</code>一个SSL / TLS握手期间正在建设。
</div> </td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getNeedClientAuth--">getNeedClientAuth</a></span>()</code>
<div class="block">
如果套接字
<i>需要</i>客户端认证则返回true。
</div> </td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>abstract <a href="../../../javax/net/ssl/SSLSession.html" title="interface in javax.net.ssl">SSLSession</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getSession--">getSession</a></span>()</code>
<div class="block">
返回此连接正在使用的SSL会话。
</div> </td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code><a href="../../../javax/net/ssl/SSLParameters.html" title="class in javax.net.ssl">SSLParameters</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getSSLParameters--">getSSLParameters</a></span>()</code>
<div class="block">
返回此SSLSocket有效的SSLParameters。
</div> </td>
</tr>
<tr class="altColor" id="i8">
<td class="colFirst"><code>abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getSupportedCipherSuites--">getSupportedCipherSuites</a></span>()</code>
<div class="block">
返回可以在此连接上使用的密码套件的名称。
</div> </td>
</tr>
<tr class="rowColor" id="i9">
<td class="colFirst"><code>abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getSupportedProtocols--">getSupportedProtocols</a></span>()</code>
<div class="block">
返回可以在SSL连接上使用的协议的名称。
</div> </td>
</tr>
<tr class="altColor" id="i10">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getUseClientMode--">getUseClientMode</a></span>()</code>
<div class="block">
如果在握手时将套接字设置为使用客户端模式则返回true。
</div> </td>
</tr>
<tr class="rowColor" id="i11">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#getWantClientAuth--">getWantClientAuth</a></span>()</code>
<div class="block">
如果套接字将
<i>请求</i>客户端身份验证则返回true。
</div> </td>
</tr>
<tr class="altColor" id="i12">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#removeHandshakeCompletedListener-javax.net.ssl.HandshakeCompletedListener-">removeHandshakeCompletedListener</a></span>(<a href="../../../javax/net/ssl/HandshakeCompletedListener.html" title="interface in javax.net.ssl">HandshakeCompletedListener</a> listener)</code>
<div class="block">
删除以前注册的握手完成侦听器。
</div> </td>
</tr>
<tr class="rowColor" id="i13">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#setEnabledCipherSuites-java.lang.String:A-">setEnabledCipherSuites</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] suites)</code>
<div class="block">
设置启用此连接的密码套件。
</div> </td>
</tr>
<tr class="altColor" id="i14">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#setEnabledProtocols-java.lang.String:A-">setEnabledProtocols</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] protocols)</code>
<div class="block">
设置允许在此连接上使用的协议版本。
</div> </td>
</tr>
<tr class="rowColor" id="i15">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#setEnableSessionCreation-boolean-">setEnableSessionCreation</a></span>(boolean flag)</code>
<div class="block">
控制此套接字是否可以建立新的SSL会话。
</div> </td>
</tr>
<tr class="altColor" id="i16">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#setNeedClientAuth-boolean-">setNeedClientAuth</a></span>(boolean need)</code>
<div class="block">
配置套接字以
<i>要求</i>客户端认证。
</div> </td>
</tr>
<tr class="rowColor" id="i17">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#setSSLParameters-javax.net.ssl.SSLParameters-">setSSLParameters</a></span>(<a href="../../../javax/net/ssl/SSLParameters.html" title="class in javax.net.ssl">SSLParameters</a> params)</code>
<div class="block">
将SSLParameters应用于此套接字。
</div> </td>
</tr>
<tr class="altColor" id="i18">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#setUseClientMode-boolean-">setUseClientMode</a></span>(boolean mode)</code>
<div class="block">
在握手时,将套接字配置为使用客户端(或服务器)模式。
</div> </td>
</tr>
<tr class="rowColor" id="i19">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#setWantClientAuth-boolean-">setWantClientAuth</a></span>(boolean want)</code>
<div class="block">
配置套接字以
<i>请求</i>客户端认证。
</div> </td>
</tr>
<tr class="altColor" id="i20">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SSLSocket.html#startHandshake--">startHandshake</a></span>()</code>
<div class="block">
在此连接上启动SSL握手。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.net.Socket">
<!-- --> </a> <h3>Methods inherited from class java.net.<a href="../../../java/net/Socket.html" title="class in java.net">Socket</a></h3> <code><a href="../../../java/net/Socket.html#bind-java.net.SocketAddress-">bind</a>, <a href="../../../java/net/Socket.html#close--">close</a>, <a href="../../../java/net/Socket.html#connect-java.net.SocketAddress-">connect</a>, <a href="../../../java/net/Socket.html#connect-java.net.SocketAddress-int-">connect</a>, <a href="../../../java/net/Socket.html#getChannel--">getChannel</a>, <a href="../../../java/net/Socket.html#getInetAddress--">getInetAddress</a>, <a href="../../../java/net/Socket.html#getInputStream--">getInputStream</a>, <a href="../../../java/net/Socket.html#getKeepAlive--">getKeepAlive</a>, <a href="../../../java/net/Socket.html#getLocalAddress--">getLocalAddress</a>, <a href="../../../java/net/Socket.html#getLocalPort--">getLocalPort</a>, <a href="../../../java/net/Socket.html#getLocalSocketAddress--">getLocalSocketAddress</a>, <a href="../../../java/net/Socket.html#getOOBInline--">getOOBInline</a>, <a href="../../../java/net/Socket.html#getOutputStream--">getOutputStream</a>, <a href="../../../java/net/Socket.html#getPort--">getPort</a>, <a href="../../../java/net/Socket.html#getReceiveBufferSize--">getReceiveBufferSize</a>, <a href="../../../java/net/Socket.html#getRemoteSocketAddress--">getRemoteSocketAddress</a>, <a href="../../../java/net/Socket.html#getReuseAddress--">getReuseAddress</a>, <a href="../../../java/net/Socket.html#getSendBufferSize--">getSendBufferSize</a>, <a href="../../../java/net/Socket.html#getSoLinger--">getSoLinger</a>, <a href="../../../java/net/Socket.html#getSoTimeout--">getSoTimeout</a>, <a href="../../../java/net/Socket.html#getTcpNoDelay--">getTcpNoDelay</a>, <a href="../../../java/net/Socket.html#getTrafficClass--">getTrafficClass</a>, <a href="../../../java/net/Socket.html#isBound--">isBound</a>, <a href="../../../java/net/Socket.html#isClosed--">isClosed</a>, <a href="../../../java/net/Socket.html#isConnected--">isConnected</a>, <a href="../../../java/net/Socket.html#isInputShutdown--">isInputShutdown</a>, <a href="../../../java/net/Socket.html#isOutputShutdown--">isOutputShutdown</a>, <a href="../../../java/net/Socket.html#sendUrgentData-int-">sendUrgentData</a>, <a href="../../../java/net/Socket.html#setKeepAlive-boolean-">setKeepAlive</a>, <a href="../../../java/net/Socket.html#setOOBInline-boolean-">setOOBInline</a>, <a href="../../../java/net/Socket.html#setPerformancePreferences-int-int-int-">setPerformancePreferences</a>, <a href="../../../java/net/Socket.html#setReceiveBufferSize-int-">setReceiveBufferSize</a>, <a href="../../../java/net/Socket.html#setReuseAddress-boolean-">setReuseAddress</a>, <a href="../../../java/net/Socket.html#setSendBufferSize-int-">setSendBufferSize</a>, <a href="../../../java/net/Socket.html#setSocketImplFactory-java.net.SocketImplFactory-">setSocketImplFactory</a>, <a href="../../../java/net/Socket.html#setSoLinger-boolean-int-">setSoLinger</a>, <a href="../../../java/net/Socket.html#setSoTimeout-int-">setSoTimeout</a>, <a href="../../../java/net/Socket.html#setTcpNoDelay-boolean-">setTcpNoDelay</a>, <a href="../../../java/net/Socket.html#setTrafficClass-int-">setTrafficClass</a>, <a href="../../../java/net/Socket.html#shutdownInput--">shutdownInput</a>, <a href="../../../java/net/Socket.html#shutdownOutput--">shutdownOutput</a>, <a href="../../../java/net/Socket.html#toString--">toString</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- --> </a> <h3>Methods inherited from class java.lang.<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></h3> <code><a href="../../../java/lang/Object.html#clone--">clone</a>, <a href="../../../java/lang/Object.html#equals-java.lang.Object-">equals</a>, <a href="../../../java/lang/Object.html#finalize--">finalize</a>, <a href="../../../java/lang/Object.html#getClass--">getClass</a>, <a href="../../../java/lang/Object.html#hashCode--">hashCode</a>, <a href="../../../java/lang/Object.html#notify--">notify</a>, <a href="../../../java/lang/Object.html#notifyAll--">notifyAll</a>, <a href="../../../java/lang/Object.html#wait--">wait</a>, <a href="../../../java/lang/Object.html#wait-long-">wait</a>, <a href="../../../java/lang/Object.html#wait-long-int-">wait</a></code></li>
</ul> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- --> </a> <h3>构造方法详细信息</h3> <a name="SSLSocket--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>SSLSocket</h4> <pre>protected SSLSocket()</pre>
<div class="block">
<span>仅由子类使用。</span>
<span>构造未初始化的未连接的TCP套接字。</span>
</div> </li>
</ul> <a name="SSLSocket-java.lang.String-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>SSLSocket</h4> <pre>protected SSLSocket(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> host,
int port)
throws <a href="../../../java/io/IOException.html" title="class in java.io">IOException</a>,
<a href="../../../java/net/UnknownHostException.html" title="class in java.net">UnknownHostException</a></pre>
<div class="block">
<span>仅由子类使用。</span>
<span>构造到指定端口的命名主机的TCP连接。</span>
<span>这充当SSL客户端。</span>
<p> <span>如果有一个安全管理器,它的<code>checkConnect</code>方法被调用主机地址和<code>port</code>作为其参数。</span> <span>这可能会导致SecurityException。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>host</code> - 用于连接的主机名称,或环回地址的
<code>null</code>
</dd>
<dd>
<code>port</code> - 服务器端口号
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在创建套接字时发生I / O错误
</dd>
<dd>
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果安全管理器存在,并且其
<code>checkConnect</code>方法不允许操作。
</dd>
<dd>
<code><a href="../../../java/net/UnknownHostException.html" title="class in java.net">UnknownHostException</a></code> - 如果主机不知道
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果端口参数超出指定范围的有效端口值介于0和65535之间
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../java/lang/SecurityManager.html#checkConnect-java.lang.String-int-"><code>SecurityManager.checkConnect(java.lang.String, int)</code></a>
</dd>
</dl> </li>
</ul> <a name="SSLSocket-java.net.InetAddress-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>SSLSocket</h4> <pre>protected SSLSocket(<a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> address,
int port)
throws <a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>仅由子类使用。</span>
<span>构造到指定地址和端口的服务器的TCP连接。</span>
<span>这充当SSL客户端。</span>
<p> <span>如果有一个安全管理器,它的<code>checkConnect</code>方法被调用主机地址和<code>port</code>作为其参数。</span> <span>这可能会导致SecurityException。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>address</code> - 服务器的主机
</dd>
<dd>
<code>port</code> - 其港口
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在创建套接字时发生I / O错误
</dd>
<dd>
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果安全管理器存在,并且其
<code>checkConnect</code>方法不允许操作。
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果端口参数超出指定范围的有效端口值介于0和65535之间包括0和65535之间。
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>address</code>为空。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../java/lang/SecurityManager.html#checkConnect-java.lang.String-int-"><code>SecurityManager.checkConnect(java.lang.String, int)</code></a>
</dd>
</dl> </li>
</ul> <a name="SSLSocket-java.lang.String-int-java.net.InetAddress-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>SSLSocket</h4> <pre>protected SSLSocket(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> host,
int port,
<a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> clientAddress,
int clientPort)
throws <a href="../../../java/io/IOException.html" title="class in java.io">IOException</a>,
<a href="../../../java/net/UnknownHostException.html" title="class in java.net">UnknownHostException</a></pre>
<div class="block">
<span>仅由子类使用。</span>
<span>在指定端口构造与指定主机的SSL连接将连接的客户端绑定给给定的地址和端口。</span>
<span>这充当SSL客户端。</span>
<p> <span>如果有一个安全管理器,它的<code>checkConnect</code>方法被调用主机地址和<code>port</code>作为其参数。</span> <span>这可能会导致SecurityException。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>host</code> - 用于连接的主机的名称,或者是环回地址的
<code>null</code>
</dd>
<dd>
<code>port</code> - 服务器端口号
</dd>
<dd>
<code>clientAddress</code> - 套接字绑定的客户端地址,或
<code>null</code>
<code>anyLocal</code>地址。
</dd>
<dd>
<code>clientPort</code> - 套接字绑定的客户端端口,或系统选择的自由端口的
<code>zero</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在创建套接字时发生I / O错误
</dd>
<dd>
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果安全管理器存在,并且其
<code>checkConnect</code>方法不允许操作。
</dd>
<dd>
<code><a href="../../../java/net/UnknownHostException.html" title="class in java.net">UnknownHostException</a></code> - 如果主机不知道
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果端口参数或clientPort参数超出了介于0和65535之间的有效端口值的指定范围包括0和65535之间
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../java/lang/SecurityManager.html#checkConnect-java.lang.String-int-"><code>SecurityManager.checkConnect(java.lang.String, int)</code></a>
</dd>
</dl> </li>
</ul> <a name="SSLSocket-java.net.InetAddress-int-java.net.InetAddress-int-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>SSLSocket</h4> <pre>protected SSLSocket(<a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> address,
int port,
<a href="../../../java/net/InetAddress.html" title="class in java.net">InetAddress</a> clientAddress,
int clientPort)
throws <a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>仅由子类使用。</span>
<span>构造到指定地址和TCP端口的服务器的SSL连接将连接的客户端绑定给定的地址和端口。</span>
<span>这充当SSL客户端。</span>
<p> <span>如果有一个安全管理器,它的<code>checkConnect</code>方法被调用主机地址和<code>port</code>作为参数。</span> <span>这可能会导致SecurityException。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>address</code> - 服务器的主机
</dd>
<dd>
<code>port</code> - 其端口
</dd>
<dd>
<code>clientAddress</code> - 套接字绑定的客户端地址,或
<code>null</code>
<code>anyLocal</code>地址。
</dd>
<dd>
<code>clientPort</code> - 套接字绑定的客户端端口,或系统选择的自由端口的
<code>zero</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在创建套接字时发生I / O错误
</dd>
<dd>
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果安全管理器存在,并且其
<code>checkConnect</code>方法不允许操作。
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果端口参数或clientPort参数超出了介于0和65535之间的有效端口值的指定范围包括0和65535之间
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>address</code>为空。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../java/lang/SecurityManager.html#checkConnect-java.lang.String-int-"><code>SecurityManager.checkConnect(java.lang.String, int)</code></a>
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getSupportedCipherSuites--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getSupportedCipherSuites</h4> <pre>public abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] getSupportedCipherSuites()</pre>
<div class="block">
<span>返回可以在此连接上使用的密码套件的名称。</span>
<span>通常,默认情况下实际上只能启用这些子集,因为此列表可能包括不符合这些默认值的服务质量要求的密码套件。</span>
<span>这样的密码套件在专门的应用中可能是有用的。</span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
一组加密套件名称
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getEnabledCipherSuites--"><code>getEnabledCipherSuites()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setEnabledCipherSuites-java.lang.String:A-"><code>setEnabledCipherSuites(String [])</code></a>
</dd>
</dl> </li>
</ul> <a name="getEnabledCipherSuites--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getEnabledCipherSuites</h4> <pre>public abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] getEnabledCipherSuites()</pre>
<div class="block">
<span>返回当前启用此SSL连接的SSL密码套件的名称。</span>
<span>当首次创建SSLSocket时所有启用的密码套件都支持最低服务质量。</span>
<span>因此,在某些环境中,此值可能为空。</span>
<p> <span>即使已启用套件,也可能永远不会使用。</span> <span>(例如,对等体不支持它,套件的必需证书(和私钥)不可用,或启用匿名套件,但需要验证。</span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
一组加密套件名称
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getSupportedCipherSuites--"><code>getSupportedCipherSuites()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setEnabledCipherSuites-java.lang.String:A-"><code>setEnabledCipherSuites(String [])</code></a>
</dd>
</dl> </li>
</ul> <a name="setEnabledCipherSuites-java.lang.String:A-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setEnabledCipherSuites</h4> <pre>public abstract void setEnabledCipherSuites(<a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] suites)</pre>
<div class="block">
<span>设置启用此连接的密码套件。</span>
<p> <span><code>suites</code>参数中的每个密码套件都必须由getSupportedCipherSuites列出否则该方法将失败。</span> <span>成功调用此方法后,只能启用<code>suites</code>参数中列出的<code>suites</code></span> </p>
<p> <span>有关为什么连接上永远不会使用特定密码<a href="../../../javax/net/ssl/SSLSocket.html#getEnabledCipherSuites--">套件</a>的更多信息,请参阅<code>getEnabledCipherSuites()</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>suites</code> - 要启用的所有密码套件的名称
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 当不支持由参数命名的一个或多个密码时,或当参数为空时。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getSupportedCipherSuites--"><code>getSupportedCipherSuites()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#getEnabledCipherSuites--"><code>getEnabledCipherSuites()</code></a>
</dd>
</dl> </li>
</ul> <a name="getSupportedProtocols--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getSupportedProtocols</h4> <pre>public abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] getSupportedProtocols()</pre>
<div class="block">
返回可以在SSL连接上使用的协议的名称。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
支持的一系列协议
</dd>
</dl> </li>
</ul> <a name="getEnabledProtocols--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getEnabledProtocols</h4> <pre>public abstract <a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] getEnabledProtocols()</pre>
<div class="block">
返回当前允许在此连接上使用的协议版本的名称。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
一系列协议
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#setEnabledProtocols-java.lang.String:A-"><code>setEnabledProtocols(String [])</code></a>
</dd>
</dl> </li>
</ul> <a name="setEnabledProtocols-java.lang.String:A-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setEnabledProtocols</h4> <pre>public abstract void setEnabledProtocols(<a href="../../../java/lang/String.html" title="class in java.lang">String</a>[] protocols)</pre>
<div class="block">
<span>设置允许在此连接上使用的协议版本。</span>
<p> <span>协议必须已被<code>getSupportedProtocols()</code>列为受支持。</span> <span>成功调用此方法后仅启用protocols参数中列出的<code>protocols</code>使用。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>protocols</code> - 所有要启用的协议的名称。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 当一个或多个由参数命名的协议不受支持或协议参数为null时。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getEnabledProtocols--"><code>getEnabledProtocols()</code></a>
</dd>
</dl> </li>
</ul> <a name="getSession--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getSession</h4> <pre>public abstract <a href="../../../javax/net/ssl/SSLSession.html" title="interface in javax.net.ssl">SSLSession</a> getSession()</pre>
<div class="block">
<span>返回此连接正在使用的SSL会话。</span>
<span>这些可以长期存在,并且经常对应于一些用户的整个登录会话。</span>
<span>会话指定了该会话中所有连接正在主动使用的特定加密套件,以及会话的客户端和服务器的身份。</span>
<p> <span>如果需要,此方法将启动初始握手,然后阻止,直到握手建立。</span> </p>
<p> <span>如果在初始握手期间发生错误则此方法返回一个无效的会话对象该对象报告“SSL_NULL_WITH_NULL_NULL”的无效密码套件。</span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<code>SSLSession</code>
</dd>
</dl> </li>
</ul> <a name="getHandshakeSession--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getHandshakeSession</h4> <pre>public <a href="../../../javax/net/ssl/SSLSession.html" title="interface in javax.net.ssl">SSLSession</a> getHandshakeSession()</pre>
<div class="block">
<span>返回<code>SSLSession</code>一个SSL / TLS握手期间正在建设。</span>
<p> <span>TLS协议可以协商在使用此类的实例时需要的参数<code>SSLSession</code>已经被完全初始化并通过<code>getSession</code></span> <span>例如有效的签名算法列表可能限制在TrustManager决策期间可以使用的证书的类型或者可以调整最大TLS片段数据包大小以更好地支持网络环境。</span> </p>
<p> <span>此方法提供了早期访问<code>SSLSession</code>被构造。</span> <span>取决于握手进度有多远,有些数据可能尚未被使用。</span> <span>例如,如果远程服务器将发送一个证书链,但链尚未不被处理时, <code>getPeerCertificates</code>的方法<code>SSLSession</code>将抛出SSLPeerUnverifiedException。</span> <span>一旦该链已被处理, <code>getPeerCertificates</code>将返回正确的值。</span> </p>
<p> <span><a href="../../../javax/net/ssl/SSLSocket.html#getSession--"><code>getSession()</code></a>不同,该方法不会启动初始握手,并且在握手完成之前不阻止。</span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>如果此实例当前不是握手或者当前握手没有进展到足够大以创建基本SSLSession则为null。</span>
<span>否则,此方法返回<code>SSLSession</code>目前正在谈判。</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/UnsupportedOperationException.html" title="class in java.lang">UnsupportedOperationException</a></code> - 如果底层提供程序不实现该操作。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.7
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/net/ssl/SSLEngine.html" title="javax.net.ssl中的类"><code>SSLEngine</code></a> <a href="../../../javax/net/ssl/SSLSession.html" title="javax.net.ssl中的接口"><code>SSLSession</code></a> <a href="../../../javax/net/ssl/ExtendedSSLSession.html" title="javax.net.ssl中的类"><code>ExtendedSSLSession</code></a> <a href="../../../javax/net/ssl/X509ExtendedKeyManager.html" title="javax.net.ssl中的类"><code>X509ExtendedKeyManager</code></a> <a href="../../../javax/net/ssl/X509ExtendedTrustManager.html" title="javax.net.ssl中的类"><code>X509ExtendedTrustManager</code></a></span>
</dd>
</dl> </li>
</ul> <a name="addHandshakeCompletedListener-javax.net.ssl.HandshakeCompletedListener-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>addHandshakeCompletedListener</h4> <pre>public abstract void addHandshakeCompletedListener(<a href="../../../javax/net/ssl/HandshakeCompletedListener.html" title="interface in javax.net.ssl">HandshakeCompletedListener</a> listener)</pre>
<div class="block">
注册事件侦听器以接收SSL握手在此连接上已完成的通知。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>listener</code> - HandShake已完成的事件侦听器
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果参数为空。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#startHandshake--"><code>startHandshake()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#removeHandshakeCompletedListener-javax.net.ssl.HandshakeCompletedListener-"><code>removeHandshakeCompletedListener(HandshakeCompletedListener)</code></a>
</dd>
</dl> </li>
</ul> <a name="removeHandshakeCompletedListener-javax.net.ssl.HandshakeCompletedListener-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>removeHandshakeCompletedListener</h4> <pre>public abstract void removeHandshakeCompletedListener(<a href="../../../javax/net/ssl/HandshakeCompletedListener.html" title="interface in javax.net.ssl">HandshakeCompletedListener</a> listener)</pre>
<div class="block">
删除以前注册的握手完成侦听器。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>listener</code> - HandShake Completed事件侦听器
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果监听器未注册,或参数为空。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#addHandshakeCompletedListener-javax.net.ssl.HandshakeCompletedListener-"><code>addHandshakeCompletedListener(HandshakeCompletedListener)</code></a>
</dd>
</dl> </li>
</ul> <a name="startHandshake--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>startHandshake</h4> <pre>public abstract void startHandshake()
throws <a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>在此连接上启动SSL握手。</span>
<span>常见的原因包括需要使用新的加密密钥,更改密码套件或启动新的会话。</span>
<span>要强制完全重新认证,在开始此握手之前,当前会话可能无效。</span>
<p> <span>如果数据已经在连接上发送,则在此握手期间它继续流动。</span> <span>当握手完成时,会发出一个事件信号。</span> <span>该方法对于连接上的初始握手是同步的,并且在协商的握手完成时返回。</span> <span>某些协议可能不支持现有套接字上的多次握手并可能会导致IOException异常。</span> </p>
</div>
<dl>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 网络级错误
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#addHandshakeCompletedListener-javax.net.ssl.HandshakeCompletedListener-"><code>addHandshakeCompletedListener(HandshakeCompletedListener)</code></a>
</dd>
</dl> </li>
</ul> <a name="setUseClientMode-boolean-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setUseClientMode</h4> <pre>public abstract void setUseClientMode(boolean mode)</pre>
<div class="block">
<span>在握手时,将套接字配置为使用客户端(或服务器)模式。</span>
<p> <span>在发生任何握手之前必须调用此方法。</span> <span>一旦握手已经开始,在该插座的使用寿命内不能重置该模式。</span> </p>
<p> <span>服务器通常认证自己,客户端不需要这样做。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>mode</code> - 如果套接字应在“客户端”模式下开始
<code>mode</code> 则为true
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果在初始握手开始后尝试模式更改。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getUseClientMode--"><code>getUseClientMode()</code></a>
</dd>
</dl> </li>
</ul> <a name="getUseClientMode--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getUseClientMode</h4> <pre>public abstract boolean getUseClientMode()</pre>
<div class="block">
如果在握手时将套接字设置为使用客户端模式则返回true。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
如果套接字应该在“客户端”模式下进行握手则为true
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#setUseClientMode-boolean-"><code>setUseClientMode(boolean)</code></a>
</dd>
</dl> </li>
</ul> <a name="setNeedClientAuth-boolean-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setNeedClientAuth</h4> <pre>public abstract void setNeedClientAuth(boolean need)</pre>
<div class="block">
<span>配置套接字以<i>要求</i>客户端认证。</span>
<span>此选项仅对服务器模式下的套接字有用。</span>
<p> <span>套接字的客户端验证设置是以下之一:</span> </p>
<ul>
<li> <span>需要客户端身份验证</span> </li>
<li> <span>客户端认证请求</span> </li>
<li> <span>不需要客户端认证</span> </li>
</ul>
<p> <span><a href="../../../javax/net/ssl/SSLSocket.html#setWantClientAuth-boolean-"><code>setWantClientAuth(boolean)</code></a>不同,如果设置此选项,并且客户端选择不提供有关其自身的身份验证信息, <i>则协商将停止,并且连接将被删除</i></span> </p>
<p> <span>调用此方法将覆盖由此方法或<a href="../../../javax/net/ssl/SSLSocket.html#setWantClientAuth-boolean-"><code>setWantClientAuth(boolean)</code></a>进行的任何以前的设置。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>need</code> - 如果需要客户端验证则设置为true;如果不需要客户端验证则设置为false。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getNeedClientAuth--"><code>getNeedClientAuth()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setWantClientAuth-boolean-"><code>setWantClientAuth(boolean)</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#getWantClientAuth--"><code>getWantClientAuth()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setUseClientMode-boolean-"><code>setUseClientMode(boolean)</code></a>
</dd>
</dl> </li>
</ul> <a name="getNeedClientAuth--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getNeedClientAuth</h4> <pre>public abstract boolean getNeedClientAuth()</pre>
<div class="block">
<span>如果套接字<i>需要</i>客户端认证则返回true。</span>
<span>此选项仅对服务器模式下的套接字有用。</span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
如果需要客户端验证则为true;如果不需要客户端验证则为false。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#setNeedClientAuth-boolean-"><code>setNeedClientAuth(boolean)</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setWantClientAuth-boolean-"><code>setWantClientAuth(boolean)</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#getWantClientAuth--"><code>getWantClientAuth()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setUseClientMode-boolean-"><code>setUseClientMode(boolean)</code></a>
</dd>
</dl> </li>
</ul> <a name="setWantClientAuth-boolean-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setWantClientAuth</h4> <pre>public abstract void setWantClientAuth(boolean want)</pre>
<div class="block">
<span>配置套接字以<i>请求</i>客户端认证。</span>
<span>此选项仅对服务器模式下的套接字有用。</span>
<p> <span>套接字的客户端验证设置是以下之一:</span> </p>
<ul>
<li> <span>需要客户端身份验证</span> </li>
<li> <span>客户端认证请求</span> </li>
<li> <span>不需要客户端认证</span> </li>
</ul>
<p> <span><a href="../../../javax/net/ssl/SSLSocket.html#setNeedClientAuth-boolean-"><code>setNeedClientAuth(boolean)</code></a>不同,如果设置此选项,并且客户端选择不提供有关其自身的身份验证信息, <i>则协商将继续进行</i></span> </p>
<p> <span>调用此方法将覆盖此方法或<a href="../../../javax/net/ssl/SSLSocket.html#setNeedClientAuth-boolean-"><code>setNeedClientAuth(boolean)</code></a>所做的任何以前的设置。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>want</code> - 如果客户端认证被请求设置为true如果不需要客户端认证则设置为false。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getWantClientAuth--"><code>getWantClientAuth()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setNeedClientAuth-boolean-"><code>setNeedClientAuth(boolean)</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#getNeedClientAuth--"><code>getNeedClientAuth()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setUseClientMode-boolean-"><code>setUseClientMode(boolean)</code></a>
</dd>
</dl> </li>
</ul> <a name="getWantClientAuth--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getWantClientAuth</h4> <pre>public abstract boolean getWantClientAuth()</pre>
<div class="block">
<span>如果套接字将<i>请求</i>客户端身份验证则返回true。</span>
<span>此选项仅对服务器模式下的套接字有用。</span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
如果客户端认证被请求则为true;如果不需要客户端认证则为false。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#setNeedClientAuth-boolean-"><code>setNeedClientAuth(boolean)</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#getNeedClientAuth--"><code>getNeedClientAuth()</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setWantClientAuth-boolean-"><code>setWantClientAuth(boolean)</code></a>
<a href="../../../javax/net/ssl/SSLSocket.html#setUseClientMode-boolean-"><code>setUseClientMode(boolean)</code></a>
</dd>
</dl> </li>
</ul> <a name="setEnableSessionCreation-boolean-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setEnableSessionCreation</h4> <pre>public abstract void setEnableSessionCreation(boolean flag)</pre>
<div class="block">
<span>控制此套接字是否可以建立新的SSL会话。</span>
<span>如果不允许会话创建,并且没有现有的会话恢复,则不会有成功的握手。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>flag</code> - true表示可以创建会话;</span>
<span>这是默认值。</span>
<span>false表示必须恢复现有会话</span>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#getEnableSessionCreation--"><code>getEnableSessionCreation()</code></a>
</dd>
</dl> </li>
</ul> <a name="getEnableSessionCreation--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getEnableSessionCreation</h4> <pre>public abstract boolean getEnableSessionCreation()</pre>
<div class="block">
如果此套接字可能建立新的SSL会话则返回true。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>true表示可以创建会话;</span>
<span>这是默认值。</span>
<span>false表示必须恢复现有会话</span>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/net/ssl/SSLSocket.html#setEnableSessionCreation-boolean-"><code>setEnableSessionCreation(boolean)</code></a>
</dd>
</dl> </li>
</ul> <a name="getSSLParameters--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getSSLParameters</h4> <pre>public <a href="../../../javax/net/ssl/SSLParameters.html" title="class in javax.net.ssl">SSLParameters</a> getSSLParameters()</pre>
<div class="block">
<span>返回此SSLSocket有效的SSLParameters。</span>
<span>返回的SSLParameters的密码和协议始终不为空。</span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
此SSLSocket的SSLParameters有效。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
</dl> </li>
</ul> <a name="setSSLParameters-javax.net.ssl.SSLParameters-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>setSSLParameters</h4> <pre>public void setSSLParameters(<a href="../../../javax/net/ssl/SSLParameters.html" title="class in javax.net.ssl">SSLParameters</a> params)</pre>
<div class="block">
<span>将SSLParameters应用于此套接字。</span>
<p> <span>意即:</span> </p>
<ul>
<li> <span>如果<code>params.getCipherSuites()</code>为非空值,则使用该值调用<code>setEnabledCipherSuites()</code></span> </li>
<li> <span>如果<code>params.getProtocols()</code>不为空,则使用该值调用<code>setEnabledProtocols()</code></span> </li>
<li> <span>如果<code>params.getNeedClientAuth()</code><code>params.getWantClientAuth()</code>返回<code>true</code> <code>setWantClientAuth(true)</code>分别调用<code>setNeedClientAuth(true)</code>和setWantClientAuth(true);</span> <span>否则<code>setWantClientAuth(false)</code></span> </li>
<li> <span>如果<code>params.getServerNames()</code>为非空值,套接字将使用该值配置其服务器名称。</span> </li>
<li> <span>如果<code>params.getSNIMatchers()</code>为非空值则套接字将使用该值配置其SNI匹配器。</span> </li>
</ul>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>params</code> - 参数
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果setEnabledCipherSuites或setEnabledProtocols调用失败
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>