Modified: 
websites/production/commons/content/proper/commons-net/apidocs/src-html/org/apache/commons/net/SocketClient.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-net/apidocs/src-html/org/apache/commons/net/SocketClient.html
 (original)
+++ 
websites/production/commons/content/proper/commons-net/apidocs/src-html/org/apache/commons/net/SocketClient.html
 Mon Jun 10 18:52:55 2024
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML>
 <html lang="en">
 <head>
-<!-- Generated by javadoc (17) -->
+<!-- Generated by javadoc (21) -->
 <title>Source code</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta name="description" content="source: package: org.apache.commons.net, 
class: SocketClient">
@@ -332,482 +332,485 @@
 <span class="source-line-no">319</span><span id="line-319">     * Disconnects 
the socket connection. You should call this method after you've finished using 
the class instance and also before you call {@link #connect</span>
 <span class="source-line-no">320</span><span id="line-320">     * connect() } 
again. _isConnected_ is set to false, _socket_ is set to null, _input_ is set 
to null, and _output_ is set to null.</span>
 <span class="source-line-no">321</span><span id="line-321">     *</span>
-<span class="source-line-no">322</span><span id="line-322">     * @throws 
IOException If there is an error closing the socket.</span>
+<span class="source-line-no">322</span><span id="line-322">     * @throws 
IOException not thrown, subclasses may throw.</span>
 <span class="source-line-no">323</span><span id="line-323">     */</span>
-<span class="source-line-no">324</span><span id="line-324">    public void 
disconnect() throws IOException {</span>
-<span class="source-line-no">325</span><span id="line-325">        
closeQuietly(_socket_);</span>
-<span class="source-line-no">326</span><span id="line-326">        
closeQuietly(_input_);</span>
-<span class="source-line-no">327</span><span id="line-327">        
closeQuietly(_output_);</span>
-<span class="source-line-no">328</span><span id="line-328">        _socket_ = 
null;</span>
-<span class="source-line-no">329</span><span id="line-329">        _hostname_ 
= null;</span>
-<span class="source-line-no">330</span><span id="line-330">        _input_ = 
null;</span>
-<span class="source-line-no">331</span><span id="line-331">        _output_ = 
null;</span>
-<span class="source-line-no">332</span><span id="line-332">    }</span>
-<span class="source-line-no">333</span><span id="line-333"></span>
-<span class="source-line-no">334</span><span id="line-334">    /**</span>
-<span class="source-line-no">335</span><span id="line-335">     * If there are 
any listeners, send them the command details.</span>
-<span class="source-line-no">336</span><span id="line-336">     *</span>
-<span class="source-line-no">337</span><span id="line-337">     * @param 
command the command name</span>
-<span class="source-line-no">338</span><span id="line-338">     * @param 
message the complete message, including command name</span>
-<span class="source-line-no">339</span><span id="line-339">     * @since 
3.0</span>
-<span class="source-line-no">340</span><span id="line-340">     */</span>
-<span class="source-line-no">341</span><span id="line-341">    protected void 
fireCommandSent(final String command, final String message) {</span>
-<span class="source-line-no">342</span><span id="line-342">        if 
(getCommandSupport().getListenerCount() &gt; 0) {</span>
-<span class="source-line-no">343</span><span id="line-343">            
getCommandSupport().fireCommandSent(command, message);</span>
-<span class="source-line-no">344</span><span id="line-344">        }</span>
-<span class="source-line-no">345</span><span id="line-345">    }</span>
-<span class="source-line-no">346</span><span id="line-346"></span>
-<span class="source-line-no">347</span><span id="line-347">    /**</span>
-<span class="source-line-no">348</span><span id="line-348">     * If there are 
any listeners, send them the reply details.</span>
-<span class="source-line-no">349</span><span id="line-349">     *</span>
-<span class="source-line-no">350</span><span id="line-350">     * @param 
replyCode the code extracted from the reply</span>
-<span class="source-line-no">351</span><span id="line-351">     * @param reply 
    the full reply text</span>
-<span class="source-line-no">352</span><span id="line-352">     * @since 
3.0</span>
-<span class="source-line-no">353</span><span id="line-353">     */</span>
-<span class="source-line-no">354</span><span id="line-354">    protected void 
fireReplyReceived(final int replyCode, final String reply) {</span>
-<span class="source-line-no">355</span><span id="line-355">        if 
(getCommandSupport().getListenerCount() &gt; 0) {</span>
-<span class="source-line-no">356</span><span id="line-356">            
getCommandSupport().fireReplyReceived(replyCode, reply);</span>
-<span class="source-line-no">357</span><span id="line-357">        }</span>
-<span class="source-line-no">358</span><span id="line-358">    }</span>
-<span class="source-line-no">359</span><span id="line-359"></span>
-<span class="source-line-no">360</span><span id="line-360">    /**</span>
-<span class="source-line-no">361</span><span id="line-361">     * Gets the 
charset.</span>
-<span class="source-line-no">362</span><span id="line-362">     *</span>
-<span class="source-line-no">363</span><span id="line-363">     * @return the 
charset.</span>
-<span class="source-line-no">364</span><span id="line-364">     * @since 
3.3</span>
-<span class="source-line-no">365</span><span id="line-365">     */</span>
-<span class="source-line-no">366</span><span id="line-366">    public Charset 
getCharset() {</span>
-<span class="source-line-no">367</span><span id="line-367">        return 
charset;</span>
-<span class="source-line-no">368</span><span id="line-368">    }</span>
-<span class="source-line-no">369</span><span id="line-369"></span>
-<span class="source-line-no">370</span><span id="line-370">    /**</span>
-<span class="source-line-no">371</span><span id="line-371">     * Gets the 
charset name.</span>
-<span class="source-line-no">372</span><span id="line-372">     *</span>
-<span class="source-line-no">373</span><span id="line-373">     * @return the 
charset.</span>
-<span class="source-line-no">374</span><span id="line-374">     * @since 
3.3</span>
-<span class="source-line-no">375</span><span id="line-375">     * @deprecated 
Since the code now requires Java 1.6 as a minimum</span>
-<span class="source-line-no">376</span><span id="line-376">     */</span>
-<span class="source-line-no">377</span><span id="line-377">    
@Deprecated</span>
-<span class="source-line-no">378</span><span id="line-378">    public String 
getCharsetName() {</span>
-<span class="source-line-no">379</span><span id="line-379">        return 
charset.name();</span>
-<span class="source-line-no">380</span><span id="line-380">    }</span>
-<span class="source-line-no">381</span><span id="line-381"></span>
-<span class="source-line-no">382</span><span id="line-382">    /**</span>
-<span class="source-line-no">383</span><span id="line-383">     * Subclasses 
can override this if they need to provide their own instance field for 
backwards compatibility.</span>
-<span class="source-line-no">384</span><span id="line-384">     *</span>
-<span class="source-line-no">385</span><span id="line-385">     * @return the 
CommandSupport instance, may be {@code null}</span>
-<span class="source-line-no">386</span><span id="line-386">     * @since 
3.0</span>
-<span class="source-line-no">387</span><span id="line-387">     */</span>
-<span class="source-line-no">388</span><span id="line-388">    protected 
ProtocolCommandSupport getCommandSupport() {</span>
-<span class="source-line-no">389</span><span id="line-389">        return 
commandSupport;</span>
-<span class="source-line-no">390</span><span id="line-390">    }</span>
-<span class="source-line-no">391</span><span id="line-391"></span>
-<span class="source-line-no">392</span><span id="line-392">    /**</span>
-<span class="source-line-no">393</span><span id="line-393">     * Gets the 
underlying socket connection timeout.</span>
-<span class="source-line-no">394</span><span id="line-394">     *</span>
-<span class="source-line-no">395</span><span id="line-395">     * @return 
timeout (in ms)</span>
-<span class="source-line-no">396</span><span id="line-396">     * @since 
2.0</span>
-<span class="source-line-no">397</span><span id="line-397">     */</span>
-<span class="source-line-no">398</span><span id="line-398">    public int 
getConnectTimeout() {</span>
-<span class="source-line-no">399</span><span id="line-399">        return 
connectTimeout;</span>
-<span class="source-line-no">400</span><span id="line-400">    }</span>
-<span class="source-line-no">401</span><span id="line-401"></span>
-<span class="source-line-no">402</span><span id="line-402">    /**</span>
-<span class="source-line-no">403</span><span id="line-403">     * Returns the 
current value of the default port (stored in {@link #_defaultPort_ 
_defaultPort_ }).</span>
-<span class="source-line-no">404</span><span id="line-404">     *</span>
-<span class="source-line-no">405</span><span id="line-405">     * @return The 
current value of the default port.</span>
-<span class="source-line-no">406</span><span id="line-406">     */</span>
-<span class="source-line-no">407</span><span id="line-407">    public int 
getDefaultPort() {</span>
-<span class="source-line-no">408</span><span id="line-408">        return 
_defaultPort_;</span>
-<span class="source-line-no">409</span><span id="line-409">    }</span>
-<span class="source-line-no">410</span><span id="line-410"></span>
-<span class="source-line-no">411</span><span id="line-411">    /**</span>
-<span class="source-line-no">412</span><span id="line-412">     * Returns the 
default timeout in milliseconds that is used when opening a socket.</span>
-<span class="source-line-no">413</span><span id="line-413">     *</span>
-<span class="source-line-no">414</span><span id="line-414">     * @return The 
default timeout in milliseconds that is used when opening a socket.</span>
-<span class="source-line-no">415</span><span id="line-415">     */</span>
-<span class="source-line-no">416</span><span id="line-416">    public int 
getDefaultTimeout() {</span>
-<span class="source-line-no">417</span><span id="line-417">        return 
_timeout_;</span>
-<span class="source-line-no">418</span><span id="line-418">    }</span>
-<span class="source-line-no">419</span><span id="line-419"></span>
-<span class="source-line-no">420</span><span id="line-420">    /**</span>
-<span class="source-line-no">421</span><span id="line-421">     * Returns the 
current value of the SO_KEEPALIVE flag on the currently opened socket. 
Delegates to {@link Socket#getKeepAlive()}</span>
-<span class="source-line-no">422</span><span id="line-422">     *</span>
-<span class="source-line-no">423</span><span id="line-423">     * @return True 
if SO_KEEPALIVE is enabled.</span>
-<span class="source-line-no">424</span><span id="line-424">     * @throws 
SocketException      if there is a problem with the socket</span>
-<span class="source-line-no">425</span><span id="line-425">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">426</span><span id="line-426">     * @since 
2.2</span>
-<span class="source-line-no">427</span><span id="line-427">     */</span>
-<span class="source-line-no">428</span><span id="line-428">    public boolean 
getKeepAlive() throws SocketException {</span>
-<span class="source-line-no">429</span><span id="line-429">        return 
_socket_.getKeepAlive();</span>
-<span class="source-line-no">430</span><span id="line-430">    }</span>
-<span class="source-line-no">431</span><span id="line-431"></span>
-<span class="source-line-no">432</span><span id="line-432">    /**</span>
-<span class="source-line-no">433</span><span id="line-433">     * Returns the 
local address to which the client's socket is bound. Delegates to {@link 
Socket#getLocalAddress()}</span>
-<span class="source-line-no">434</span><span id="line-434">     *</span>
-<span class="source-line-no">435</span><span id="line-435">     * @return The 
local address to which the client's socket is bound.</span>
-<span class="source-line-no">436</span><span id="line-436">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">437</span><span id="line-437">     */</span>
-<span class="source-line-no">438</span><span id="line-438">    public 
InetAddress getLocalAddress() {</span>
-<span class="source-line-no">439</span><span id="line-439">        return 
_socket_.getLocalAddress();</span>
-<span class="source-line-no">440</span><span id="line-440">    }</span>
-<span class="source-line-no">441</span><span id="line-441"></span>
-<span class="source-line-no">442</span><span id="line-442">    /**</span>
-<span class="source-line-no">443</span><span id="line-443">     * Returns the 
port number of the open socket on the local host used for the connection. 
Delegates to {@link Socket#getLocalPort()}</span>
-<span class="source-line-no">444</span><span id="line-444">     *</span>
-<span class="source-line-no">445</span><span id="line-445">     * @return The 
port number of the open socket on the local host used for the connection.</span>
-<span class="source-line-no">446</span><span id="line-446">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">447</span><span id="line-447">     */</span>
-<span class="source-line-no">448</span><span id="line-448">    public int 
getLocalPort() {</span>
-<span class="source-line-no">449</span><span id="line-449">        return 
_socket_.getLocalPort();</span>
-<span class="source-line-no">450</span><span id="line-450">    }</span>
-<span class="source-line-no">451</span><span id="line-451"></span>
-<span class="source-line-no">452</span><span id="line-452">    /**</span>
-<span class="source-line-no">453</span><span id="line-453">     * Gets the 
proxy for use with all the connections.</span>
-<span class="source-line-no">454</span><span id="line-454">     *</span>
-<span class="source-line-no">455</span><span id="line-455">     * @return the 
current proxy for connections.</span>
-<span class="source-line-no">456</span><span id="line-456">     */</span>
-<span class="source-line-no">457</span><span id="line-457">    public Proxy 
getProxy() {</span>
-<span class="source-line-no">458</span><span id="line-458">        return 
connProxy;</span>
-<span class="source-line-no">459</span><span id="line-459">    }</span>
-<span class="source-line-no">460</span><span id="line-460"></span>
-<span class="source-line-no">461</span><span id="line-461">    /**</span>
-<span class="source-line-no">462</span><span id="line-462">     * Gets the 
current receivedBuffer size</span>
-<span class="source-line-no">463</span><span id="line-463">     *</span>
-<span class="source-line-no">464</span><span id="line-464">     * @return the 
size, or -1 if not initialized</span>
-<span class="source-line-no">465</span><span id="line-465">     * @since 
3.0</span>
-<span class="source-line-no">466</span><span id="line-466">     */</span>
-<span class="source-line-no">467</span><span id="line-467">    protected int 
getReceiveBufferSize() {</span>
-<span class="source-line-no">468</span><span id="line-468">        return 
receiveBufferSize;</span>
-<span class="source-line-no">469</span><span id="line-469">    }</span>
-<span class="source-line-no">470</span><span id="line-470"></span>
-<span class="source-line-no">471</span><span id="line-471">    /**</span>
-<span class="source-line-no">472</span><span id="line-472">     * @return The 
remote address to which the client is connected. Delegates to {@link 
Socket#getInetAddress()}</span>
-<span class="source-line-no">473</span><span id="line-473">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">474</span><span id="line-474">     */</span>
-<span class="source-line-no">475</span><span id="line-475">    public 
InetAddress getRemoteAddress() {</span>
-<span class="source-line-no">476</span><span id="line-476">        return 
_socket_.getInetAddress();</span>
-<span class="source-line-no">477</span><span id="line-477">    }</span>
-<span class="source-line-no">478</span><span id="line-478"></span>
-<span class="source-line-no">479</span><span id="line-479">    /**</span>
-<span class="source-line-no">480</span><span id="line-480">     * Gets the 
remote socket address used for the connection.</span>
-<span class="source-line-no">481</span><span id="line-481">     *</span>
-<span class="source-line-no">482</span><span id="line-482">     * @return the 
remote socket address used for the connection</span>
-<span class="source-line-no">483</span><span id="line-483">     * @since 
3.10.0</span>
-<span class="source-line-no">484</span><span id="line-484">     */</span>
-<span class="source-line-no">485</span><span id="line-485">    protected 
InetSocketAddress getRemoteInetSocketAddress() {</span>
-<span class="source-line-no">486</span><span id="line-486">        return 
remoteInetSocketAddress;</span>
-<span class="source-line-no">487</span><span id="line-487">    }</span>
-<span class="source-line-no">488</span><span id="line-488"></span>
-<span class="source-line-no">489</span><span id="line-489">    /**</span>
-<span class="source-line-no">490</span><span id="line-490">     * Returns the 
port number of the remote host to which the client is connected. Delegates to 
{@link Socket#getPort()}</span>
-<span class="source-line-no">491</span><span id="line-491">     *</span>
-<span class="source-line-no">492</span><span id="line-492">     * @return The 
port number of the remote host to which the client is connected.</span>
-<span class="source-line-no">493</span><span id="line-493">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">494</span><span id="line-494">     */</span>
-<span class="source-line-no">495</span><span id="line-495">    public int 
getRemotePort() {</span>
-<span class="source-line-no">496</span><span id="line-496">        return 
_socket_.getPort();</span>
-<span class="source-line-no">497</span><span id="line-497">    }</span>
-<span class="source-line-no">498</span><span id="line-498"></span>
-<span class="source-line-no">499</span><span id="line-499">    /**</span>
-<span class="source-line-no">500</span><span id="line-500">     * Gets the 
current sendBuffer size</span>
-<span class="source-line-no">501</span><span id="line-501">     *</span>
-<span class="source-line-no">502</span><span id="line-502">     * @return the 
size, or -1 if not initialized</span>
-<span class="source-line-no">503</span><span id="line-503">     * @since 
3.0</span>
-<span class="source-line-no">504</span><span id="line-504">     */</span>
-<span class="source-line-no">505</span><span id="line-505">    protected int 
getSendBufferSize() {</span>
-<span class="source-line-no">506</span><span id="line-506">        return 
sendBufferSize;</span>
-<span class="source-line-no">507</span><span id="line-507">    }</span>
-<span class="source-line-no">508</span><span id="line-508"></span>
-<span class="source-line-no">509</span><span id="line-509">    /**</span>
-<span class="source-line-no">510</span><span id="line-510">     * Gets the 
underlying {@link ServerSocketFactory}</span>
-<span class="source-line-no">511</span><span id="line-511">     *</span>
-<span class="source-line-no">512</span><span id="line-512">     * @return The 
server socket factory</span>
-<span class="source-line-no">513</span><span id="line-513">     * @since 
2.2</span>
-<span class="source-line-no">514</span><span id="line-514">     */</span>
-<span class="source-line-no">515</span><span id="line-515">    public 
ServerSocketFactory getServerSocketFactory() {</span>
-<span class="source-line-no">516</span><span id="line-516">        return 
_serverSocketFactory_;</span>
-<span class="source-line-no">517</span><span id="line-517">    }</span>
-<span class="source-line-no">518</span><span id="line-518"></span>
-<span class="source-line-no">519</span><span id="line-519">    /**</span>
-<span class="source-line-no">520</span><span id="line-520">     * Returns the 
current SO_LINGER timeout of the currently opened socket.</span>
-<span class="source-line-no">521</span><span id="line-521">     *</span>
-<span class="source-line-no">522</span><span id="line-522">     * @return The 
current SO_LINGER timeout. If SO_LINGER is disabled returns -1.</span>
-<span class="source-line-no">523</span><span id="line-523">     * @throws 
SocketException      If the operation fails.</span>
-<span class="source-line-no">524</span><span id="line-524">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">525</span><span id="line-525">     */</span>
-<span class="source-line-no">526</span><span id="line-526">    public int 
getSoLinger() throws SocketException {</span>
-<span class="source-line-no">527</span><span id="line-527">        return 
_socket_.getSoLinger();</span>
-<span class="source-line-no">528</span><span id="line-528">    }</span>
-<span class="source-line-no">529</span><span id="line-529"></span>
-<span class="source-line-no">530</span><span id="line-530">    /**</span>
-<span class="source-line-no">531</span><span id="line-531">     * Returns the 
timeout in milliseconds of the currently opened socket.</span>
-<span class="source-line-no">532</span><span id="line-532">     *</span>
-<span class="source-line-no">533</span><span id="line-533">     * @return The 
timeout in milliseconds of the currently opened socket.</span>
-<span class="source-line-no">534</span><span id="line-534">     * @throws 
SocketException      If the operation fails.</span>
-<span class="source-line-no">535</span><span id="line-535">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">536</span><span id="line-536">     */</span>
-<span class="source-line-no">537</span><span id="line-537">    public int 
getSoTimeout() throws SocketException {</span>
-<span class="source-line-no">538</span><span id="line-538">        return 
_socket_.getSoTimeout();</span>
-<span class="source-line-no">539</span><span id="line-539">    }</span>
-<span class="source-line-no">540</span><span id="line-540"></span>
-<span class="source-line-no">541</span><span id="line-541">    /**</span>
-<span class="source-line-no">542</span><span id="line-542">     * Returns true 
if Nagle's algorithm is enabled on the currently opened socket.</span>
-<span class="source-line-no">543</span><span id="line-543">     *</span>
-<span class="source-line-no">544</span><span id="line-544">     * @return True 
if Nagle's algorithm is enabled on the currently opened socket, false 
otherwise.</span>
-<span class="source-line-no">545</span><span id="line-545">     * @throws 
SocketException      If the operation fails.</span>
-<span class="source-line-no">546</span><span id="line-546">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">547</span><span id="line-547">     */</span>
-<span class="source-line-no">548</span><span id="line-548">    public boolean 
getTcpNoDelay() throws SocketException {</span>
-<span class="source-line-no">549</span><span id="line-549">        return 
_socket_.getTcpNoDelay();</span>
-<span class="source-line-no">550</span><span id="line-550">    }</span>
-<span class="source-line-no">551</span><span id="line-551"></span>
-<span class="source-line-no">552</span><span id="line-552">    /**</span>
-<span class="source-line-no">553</span><span id="line-553">     * Make various 
checks on the socket to test if it is available for use. Note that the only 
sure test is to use it, but these checks may help in some cases.</span>
-<span class="source-line-no">554</span><span id="line-554">     *</span>
-<span class="source-line-no">555</span><span id="line-555">     * @see &lt;a 
href="https://issues.apache.org/jira/browse/NET-350"&gt;NET-350&lt;/a&gt;</span>
-<span class="source-line-no">556</span><span id="line-556">     * @return 
{@code true} if the socket appears to be available for use</span>
-<span class="source-line-no">557</span><span id="line-557">     * @since 
3.0</span>
-<span class="source-line-no">558</span><span id="line-558">     */</span>
-<span class="source-line-no">559</span><span id="line-559">    
@SuppressWarnings("resource")</span>
-<span class="source-line-no">560</span><span id="line-560">    public boolean 
isAvailable() {</span>
-<span class="source-line-no">561</span><span id="line-561">        if 
(isConnected()) {</span>
-<span class="source-line-no">562</span><span id="line-562">            try 
{</span>
-<span class="source-line-no">563</span><span id="line-563">                if 
(_socket_.getInetAddress() == null) {</span>
-<span class="source-line-no">564</span><span id="line-564">                    
return false;</span>
-<span class="source-line-no">565</span><span id="line-565">                
}</span>
-<span class="source-line-no">566</span><span id="line-566">                if 
(_socket_.getPort() == 0) {</span>
-<span class="source-line-no">567</span><span id="line-567">                    
return false;</span>
-<span class="source-line-no">568</span><span id="line-568">                
}</span>
-<span class="source-line-no">569</span><span id="line-569">                if 
(_socket_.getRemoteSocketAddress() == null) {</span>
-<span class="source-line-no">570</span><span id="line-570">                    
return false;</span>
-<span class="source-line-no">571</span><span id="line-571">                
}</span>
-<span class="source-line-no">572</span><span id="line-572">                if 
(_socket_.isClosed()) {</span>
-<span class="source-line-no">573</span><span id="line-573">                    
return false;</span>
-<span class="source-line-no">574</span><span id="line-574">                
}</span>
-<span class="source-line-no">575</span><span id="line-575">                
/*</span>
-<span class="source-line-no">576</span><span id="line-576">                 * 
these aren't exact checks (a Socket can be half-open), but since we usually 
require two-way data transfer, we check these here too:</span>
-<span class="source-line-no">577</span><span id="line-577">                 
*/</span>
-<span class="source-line-no">578</span><span id="line-578">                if 
(_socket_.isInputShutdown()) {</span>
-<span class="source-line-no">579</span><span id="line-579">                    
return false;</span>
-<span class="source-line-no">580</span><span id="line-580">                
}</span>
-<span class="source-line-no">581</span><span id="line-581">                if 
(_socket_.isOutputShutdown()) {</span>
-<span class="source-line-no">582</span><span id="line-582">                    
return false;</span>
-<span class="source-line-no">583</span><span id="line-583">                
}</span>
-<span class="source-line-no">584</span><span id="line-584">                /* 
ignore the result, catch exceptions: */</span>
-<span class="source-line-no">585</span><span id="line-585">                // 
No need to close</span>
-<span class="source-line-no">586</span><span id="line-586">                
_socket_.getInputStream();</span>
-<span class="source-line-no">587</span><span id="line-587">                // 
No need to close</span>
-<span class="source-line-no">588</span><span id="line-588">                
_socket_.getOutputStream();</span>
-<span class="source-line-no">589</span><span id="line-589">            } catch 
(final IOException ioex) {</span>
-<span class="source-line-no">590</span><span id="line-590">                
return false;</span>
-<span class="source-line-no">591</span><span id="line-591">            }</span>
-<span class="source-line-no">592</span><span id="line-592">            return 
true;</span>
-<span class="source-line-no">593</span><span id="line-593">        }</span>
-<span class="source-line-no">594</span><span id="line-594">        return 
false;</span>
-<span class="source-line-no">595</span><span id="line-595">    }</span>
-<span class="source-line-no">596</span><span id="line-596"></span>
-<span class="source-line-no">597</span><span id="line-597">    /**</span>
-<span class="source-line-no">598</span><span id="line-598">     * Returns true 
if the client is currently connected to a server.</span>
-<span class="source-line-no">599</span><span id="line-599">     *</span>
-<span class="source-line-no">600</span><span id="line-600">     * Delegates to 
{@link Socket#isConnected()}</span>
-<span class="source-line-no">601</span><span id="line-601">     *</span>
-<span class="source-line-no">602</span><span id="line-602">     * @return True 
if the client is currently connected to a server, false otherwise.</span>
-<span class="source-line-no">603</span><span id="line-603">     */</span>
-<span class="source-line-no">604</span><span id="line-604">    public boolean 
isConnected() {</span>
-<span class="source-line-no">605</span><span id="line-605">        if 
(_socket_ == null) {</span>
-<span class="source-line-no">606</span><span id="line-606">            return 
false;</span>
-<span class="source-line-no">607</span><span id="line-607">        }</span>
-<span class="source-line-no">608</span><span id="line-608"></span>
-<span class="source-line-no">609</span><span id="line-609">        return 
_socket_.isConnected();</span>
-<span class="source-line-no">610</span><span id="line-610">    }</span>
-<span class="source-line-no">611</span><span id="line-611"></span>
-<span class="source-line-no">612</span><span id="line-612">    /**</span>
-<span class="source-line-no">613</span><span id="line-613">     * Removes a 
ProtocolCommandListener.</span>
-<span class="source-line-no">614</span><span id="line-614">     *</span>
-<span class="source-line-no">615</span><span id="line-615">     * @param 
listener The ProtocolCommandListener to remove.</span>
-<span class="source-line-no">616</span><span id="line-616">     * @since 
3.0</span>
-<span class="source-line-no">617</span><span id="line-617">     */</span>
-<span class="source-line-no">618</span><span id="line-618">    public void 
removeProtocolCommandListener(final ProtocolCommandListener listener) {</span>
-<span class="source-line-no">619</span><span id="line-619">        
getCommandSupport().removeProtocolCommandListener(listener);</span>
-<span class="source-line-no">620</span><span id="line-620">    }</span>
-<span class="source-line-no">621</span><span id="line-621"></span>
-<span class="source-line-no">622</span><span id="line-622">    /**</span>
-<span class="source-line-no">623</span><span id="line-623">     * Sets the 
charset.</span>
-<span class="source-line-no">624</span><span id="line-624">     *</span>
-<span class="source-line-no">625</span><span id="line-625">     * @param 
charset the charset.</span>
-<span class="source-line-no">626</span><span id="line-626">     * @since 
3.3</span>
-<span class="source-line-no">627</span><span id="line-627">     */</span>
-<span class="source-line-no">628</span><span id="line-628">    public void 
setCharset(final Charset charset) {</span>
-<span class="source-line-no">629</span><span id="line-629">        
this.charset = charset;</span>
-<span class="source-line-no">630</span><span id="line-630">    }</span>
-<span class="source-line-no">631</span><span id="line-631"></span>
-<span class="source-line-no">632</span><span id="line-632">    /**</span>
-<span class="source-line-no">633</span><span id="line-633">     * Sets the 
connection timeout in milliseconds, which will be passed to the {@link Socket} 
object's connect() method.</span>
-<span class="source-line-no">634</span><span id="line-634">     *</span>
-<span class="source-line-no">635</span><span id="line-635">     * @param 
connectTimeout The connection timeout to use (in ms)</span>
-<span class="source-line-no">636</span><span id="line-636">     * @since 
2.0</span>
-<span class="source-line-no">637</span><span id="line-637">     */</span>
-<span class="source-line-no">638</span><span id="line-638">    public void 
setConnectTimeout(final int connectTimeout) {</span>
-<span class="source-line-no">639</span><span id="line-639">        
this.connectTimeout = connectTimeout;</span>
-<span class="source-line-no">640</span><span id="line-640">    }</span>
-<span class="source-line-no">641</span><span id="line-641"></span>
-<span class="source-line-no">642</span><span id="line-642">    /**</span>
-<span class="source-line-no">643</span><span id="line-643">     * Sets the 
default port the SocketClient should connect to when a port is not specified. 
The {@link #_defaultPort_ _defaultPort_ } variable stores this</span>
-<span class="source-line-no">644</span><span id="line-644">     * value. If 
never set, the default port is equal to zero.</span>
-<span class="source-line-no">645</span><span id="line-645">     *</span>
-<span class="source-line-no">646</span><span id="line-646">     * @param port 
The default port to set.</span>
-<span class="source-line-no">647</span><span id="line-647">     */</span>
-<span class="source-line-no">648</span><span id="line-648">    public void 
setDefaultPort(final int port) {</span>
-<span class="source-line-no">649</span><span id="line-649">        
_defaultPort_ = port;</span>
-<span class="source-line-no">650</span><span id="line-650">    }</span>
-<span class="source-line-no">651</span><span id="line-651"></span>
-<span class="source-line-no">652</span><span id="line-652">    /**</span>
-<span class="source-line-no">653</span><span id="line-653">     * Sets the 
default timeout in milliseconds to use when opening a socket. This value is 
only used previous to a call to {@link #connect connect()} and</span>
-<span class="source-line-no">654</span><span id="line-654">     * should not 
be confused with {@link #setSoTimeout setSoTimeout()} which operates on the 
currently opened socket. _timeout_ contains the new timeout value.</span>
-<span class="source-line-no">655</span><span id="line-655">     *</span>
-<span class="source-line-no">656</span><span id="line-656">     * @param 
timeout The timeout in milliseconds to use for the socket connection.</span>
-<span class="source-line-no">657</span><span id="line-657">     */</span>
-<span class="source-line-no">658</span><span id="line-658">    public void 
setDefaultTimeout(final int timeout) {</span>
-<span class="source-line-no">659</span><span id="line-659">        _timeout_ = 
timeout;</span>
-<span class="source-line-no">660</span><span id="line-660">    }</span>
-<span class="source-line-no">661</span><span id="line-661"></span>
-<span class="source-line-no">662</span><span id="line-662">    /**</span>
-<span class="source-line-no">663</span><span id="line-663">     * Sets the 
SO_KEEPALIVE flag on the currently opened socket.</span>
-<span class="source-line-no">664</span><span id="line-664">     *</span>
-<span class="source-line-no">665</span><span id="line-665">     * From the 
Javadocs, the default keepalive time is 2 hours (although this is 
implementation dependent). It looks as though the Windows WSA sockets</span>
-<span class="source-line-no">666</span><span id="line-666">     * 
implementation allows a specific keepalive value to be set, although this seems 
not to be the case on other systems.</span>
-<span class="source-line-no">667</span><span id="line-667">     *</span>
-<span class="source-line-no">668</span><span id="line-668">     * @param 
keepAlive If true, keepAlive is turned on</span>
-<span class="source-line-no">669</span><span id="line-669">     * @throws 
SocketException      if there is a problem with the socket</span>
-<span class="source-line-no">670</span><span id="line-670">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">671</span><span id="line-671">     * @since 
2.2</span>
-<span class="source-line-no">672</span><span id="line-672">     */</span>
-<span class="source-line-no">673</span><span id="line-673">    public void 
setKeepAlive(final boolean keepAlive) throws SocketException {</span>
-<span class="source-line-no">674</span><span id="line-674">        
_socket_.setKeepAlive(keepAlive);</span>
-<span class="source-line-no">675</span><span id="line-675">    }</span>
-<span class="source-line-no">676</span><span id="line-676"></span>
-<span class="source-line-no">677</span><span id="line-677">    /**</span>
-<span class="source-line-no">678</span><span id="line-678">     * Sets the 
proxy for use with all the connections. The proxy is used for connections 
established after the call to this method.</span>
-<span class="source-line-no">679</span><span id="line-679">     *</span>
-<span class="source-line-no">680</span><span id="line-680">     * @param proxy 
the new proxy for connections.</span>
-<span class="source-line-no">681</span><span id="line-681">     * @since 
3.2</span>
-<span class="source-line-no">682</span><span id="line-682">     */</span>
-<span class="source-line-no">683</span><span id="line-683">    public void 
setProxy(final Proxy proxy) {</span>
-<span class="source-line-no">684</span><span id="line-684">        
setSocketFactory(new DefaultSocketFactory(proxy));</span>
-<span class="source-line-no">685</span><span id="line-685">        connProxy = 
proxy;</span>
-<span class="source-line-no">686</span><span id="line-686">    }</span>
-<span class="source-line-no">687</span><span id="line-687"></span>
-<span class="source-line-no">688</span><span id="line-688">    /**</span>
-<span class="source-line-no">689</span><span id="line-689">     * Sets the 
underlying socket receive buffer size.</span>
-<span class="source-line-no">690</span><span id="line-690">     *</span>
-<span class="source-line-no">691</span><span id="line-691">     * @param size 
The size of the buffer in bytes.</span>
-<span class="source-line-no">692</span><span id="line-692">     * @throws 
SocketException never (but subclasses may wish to do so)</span>
-<span class="source-line-no">693</span><span id="line-693">     * @since 
2.0</span>
-<span class="source-line-no">694</span><span id="line-694">     */</span>
-<span class="source-line-no">695</span><span id="line-695">    public void 
setReceiveBufferSize(final int size) throws SocketException {</span>
-<span class="source-line-no">696</span><span id="line-696">        
receiveBufferSize = size;</span>
-<span class="source-line-no">697</span><span id="line-697">    }</span>
-<span class="source-line-no">698</span><span id="line-698"></span>
-<span class="source-line-no">699</span><span id="line-699">    /**</span>
-<span class="source-line-no">700</span><span id="line-700">     * Sets the 
underlying socket send buffer size.</span>
-<span class="source-line-no">701</span><span id="line-701">     *</span>
-<span class="source-line-no">702</span><span id="line-702">     * @param size 
The size of the buffer in bytes.</span>
-<span class="source-line-no">703</span><span id="line-703">     * @throws 
SocketException never thrown, but subclasses might want to do so</span>
-<span class="source-line-no">704</span><span id="line-704">     * @since 
2.0</span>
-<span class="source-line-no">705</span><span id="line-705">     */</span>
-<span class="source-line-no">706</span><span id="line-706">    public void 
setSendBufferSize(final int size) throws SocketException {</span>
-<span class="source-line-no">707</span><span id="line-707">        
sendBufferSize = size;</span>
-<span class="source-line-no">708</span><span id="line-708">    }</span>
-<span class="source-line-no">709</span><span id="line-709"></span>
-<span class="source-line-no">710</span><span id="line-710">    /**</span>
-<span class="source-line-no">711</span><span id="line-711">     * Sets the 
ServerSocketFactory used by the SocketClient to open ServerSocket connections. 
If the factory value is null, then a default factory is used</span>
-<span class="source-line-no">712</span><span id="line-712">     * (only do 
this to reset the factory after having previously altered it).</span>
-<span class="source-line-no">713</span><span id="line-713">     *</span>
-<span class="source-line-no">714</span><span id="line-714">     * @param 
factory The new ServerSocketFactory the SocketClient should use.</span>
-<span class="source-line-no">715</span><span id="line-715">     * @since 
2.0</span>
-<span class="source-line-no">716</span><span id="line-716">     */</span>
-<span class="source-line-no">717</span><span id="line-717">    public void 
setServerSocketFactory(final ServerSocketFactory factory) {</span>
-<span class="source-line-no">718</span><span id="line-718">        if (factory 
== null) {</span>
-<span class="source-line-no">719</span><span id="line-719">            
_serverSocketFactory_ = DEFAULT_SERVER_SOCKET_FACTORY;</span>
-<span class="source-line-no">720</span><span id="line-720">        } else 
{</span>
-<span class="source-line-no">721</span><span id="line-721">            
_serverSocketFactory_ = factory;</span>
-<span class="source-line-no">722</span><span id="line-722">        }</span>
-<span class="source-line-no">723</span><span id="line-723">    }</span>
-<span class="source-line-no">724</span><span id="line-724"></span>
-<span class="source-line-no">725</span><span id="line-725">    /**</span>
-<span class="source-line-no">726</span><span id="line-726">     * Sets the 
SocketFactory used by the SocketClient to open socket connections. If the 
factory value is null, then a default factory is used (only do this to</span>
-<span class="source-line-no">727</span><span id="line-727">     * reset the 
factory after having previously altered it). Any proxy setting is 
discarded.</span>
-<span class="source-line-no">728</span><span id="line-728">     *</span>
-<span class="source-line-no">729</span><span id="line-729">     * @param 
factory The new SocketFactory the SocketClient should use.</span>
-<span class="source-line-no">730</span><span id="line-730">     */</span>
-<span class="source-line-no">731</span><span id="line-731">    public void 
setSocketFactory(final SocketFactory factory) {</span>
-<span class="source-line-no">732</span><span id="line-732">        if (factory 
== null) {</span>
-<span class="source-line-no">733</span><span id="line-733">            
_socketFactory_ = DEFAULT_SOCKET_FACTORY;</span>
-<span class="source-line-no">734</span><span id="line-734">        } else 
{</span>
-<span class="source-line-no">735</span><span id="line-735">            
_socketFactory_ = factory;</span>
-<span class="source-line-no">736</span><span id="line-736">        }</span>
-<span class="source-line-no">737</span><span id="line-737">    }</span>
-<span class="source-line-no">738</span><span id="line-738"></span>
-<span class="source-line-no">739</span><span id="line-739">    /**</span>
-<span class="source-line-no">740</span><span id="line-740">     * Sets the 
SO_LINGER timeout on the currently opened socket.</span>
-<span class="source-line-no">741</span><span id="line-741">     *</span>
-<span class="source-line-no">742</span><span id="line-742">     * @param on  
True if linger is to be enabled, false if not.</span>
-<span class="source-line-no">743</span><span id="line-743">     * @param val 
The {@code linger} timeout (in hundredths of a second?)</span>
-<span class="source-line-no">744</span><span id="line-744">     * @throws 
SocketException      If the operation fails.</span>
-<span class="source-line-no">745</span><span id="line-745">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">746</span><span id="line-746">     */</span>
-<span class="source-line-no">747</span><span id="line-747">    public void 
setSoLinger(final boolean on, final int val) throws SocketException {</span>
-<span class="source-line-no">748</span><span id="line-748">        
_socket_.setSoLinger(on, val);</span>
-<span class="source-line-no">749</span><span id="line-749">    }</span>
-<span class="source-line-no">750</span><span id="line-750"></span>
-<span class="source-line-no">751</span><span id="line-751">    /**</span>
-<span class="source-line-no">752</span><span id="line-752">     * Sets the 
timeout in milliseconds of a currently open connection. Only call this method 
after a connection has been opened by {@link #connect connect()}.</span>
-<span class="source-line-no">753</span><span id="line-753">     * 
&lt;p&gt;</span>
-<span class="source-line-no">754</span><span id="line-754">     * To set the 
initial timeout, use {@link #setDefaultTimeout(int)} instead.</span>
-<span class="source-line-no">755</span><span id="line-755">     *</span>
-<span class="source-line-no">756</span><span id="line-756">     * @param 
timeout The timeout in milliseconds to use for the currently open socket 
connection.</span>
-<span class="source-line-no">757</span><span id="line-757">     * @throws 
SocketException      If the operation fails.</span>
-<span class="source-line-no">758</span><span id="line-758">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">759</span><span id="line-759">     */</span>
-<span class="source-line-no">760</span><span id="line-760">    public void 
setSoTimeout(final int timeout) throws SocketException {</span>
-<span class="source-line-no">761</span><span id="line-761">        
_socket_.setSoTimeout(timeout);</span>
-<span class="source-line-no">762</span><span id="line-762">    }</span>
-<span class="source-line-no">763</span><span id="line-763"></span>
-<span class="source-line-no">764</span><span id="line-764">    /**</span>
-<span class="source-line-no">765</span><span id="line-765">     * Enables or 
disables the Nagle's algorithm (TCP_NODELAY) on the currently opened 
socket.</span>
-<span class="source-line-no">766</span><span id="line-766">     *</span>
-<span class="source-line-no">767</span><span id="line-767">     * @param on 
True if Nagle's algorithm is to be enabled, false if not.</span>
-<span class="source-line-no">768</span><span id="line-768">     * @throws 
SocketException      If the operation fails.</span>
-<span class="source-line-no">769</span><span id="line-769">     * @throws 
NullPointerException if the socket is not currently open</span>
-<span class="source-line-no">770</span><span id="line-770">     */</span>
-<span class="source-line-no">771</span><span id="line-771">    public void 
setTcpNoDelay(final boolean on) throws SocketException {</span>
-<span class="source-line-no">772</span><span id="line-772">        
_socket_.setTcpNoDelay(on);</span>
-<span class="source-line-no">773</span><span id="line-773">    }</span>
-<span class="source-line-no">774</span><span id="line-774"></span>
-<span class="source-line-no">775</span><span id="line-775">    /**</span>
-<span class="source-line-no">776</span><span id="line-776">     * Verifies 
that the remote end of the given socket is connected to the same host that the 
SocketClient is currently connected to. This is useful for</span>
-<span class="source-line-no">777</span><span id="line-777">     * doing a 
quick security check when a client needs to accept a connection from a server, 
such as an FTP data connection or a BSD R command standard error</span>
-<span class="source-line-no">778</span><span id="line-778">     * 
stream.</span>
-<span class="source-line-no">779</span><span id="line-779">     *</span>
-<span class="source-line-no">780</span><span id="line-780">     * @param 
socket the item to check against</span>
-<span class="source-line-no">781</span><span id="line-781">     * @return True 
if the remote hosts are the same, false if not.</span>
-<span class="source-line-no">782</span><span id="line-782">     */</span>
-<span class="source-line-no">783</span><span id="line-783">    public boolean 
verifyRemote(final Socket socket) {</span>
-<span class="source-line-no">784</span><span id="line-784">        final 
InetAddress host1;</span>
-<span class="source-line-no">785</span><span id="line-785">        final 
InetAddress host2;</span>
-<span class="source-line-no">786</span><span id="line-786"></span>
-<span class="source-line-no">787</span><span id="line-787">        host1 = 
socket.getInetAddress();</span>
-<span class="source-line-no">788</span><span id="line-788">        host2 = 
getRemoteAddress();</span>
+<span class="source-line-no">324</span><span id="line-324">    
@SuppressWarnings("unused") // subclasses may throw IOException</span>
+<span class="source-line-no">325</span><span id="line-325">    public void 
disconnect() throws IOException {</span>
+<span class="source-line-no">326</span><span id="line-326">        
closeQuietly(_socket_);</span>
+<span class="source-line-no">327</span><span id="line-327">        
closeQuietly(_input_);</span>
+<span class="source-line-no">328</span><span id="line-328">        
closeQuietly(_output_);</span>
+<span class="source-line-no">329</span><span id="line-329">        _socket_ = 
null;</span>
+<span class="source-line-no">330</span><span id="line-330">        _hostname_ 
= null;</span>
+<span class="source-line-no">331</span><span id="line-331">        _input_ = 
null;</span>
+<span class="source-line-no">332</span><span id="line-332">        _output_ = 
null;</span>
+<span class="source-line-no">333</span><span id="line-333">    }</span>
+<span class="source-line-no">334</span><span id="line-334"></span>
+<span class="source-line-no">335</span><span id="line-335">    /**</span>
+<span class="source-line-no">336</span><span id="line-336">     * If there are 
any listeners, send them the command details.</span>
+<span class="source-line-no">337</span><span id="line-337">     *</span>
+<span class="source-line-no">338</span><span id="line-338">     * @param 
command the command name</span>
+<span class="source-line-no">339</span><span id="line-339">     * @param 
message the complete message, including command name</span>
+<span class="source-line-no">340</span><span id="line-340">     * @since 
3.0</span>
+<span class="source-line-no">341</span><span id="line-341">     */</span>
+<span class="source-line-no">342</span><span id="line-342">    protected void 
fireCommandSent(final String command, final String message) {</span>
+<span class="source-line-no">343</span><span id="line-343">        if 
(getCommandSupport().getListenerCount() &gt; 0) {</span>
+<span class="source-line-no">344</span><span id="line-344">            
getCommandSupport().fireCommandSent(command, message);</span>
+<span class="source-line-no">345</span><span id="line-345">        }</span>
+<span class="source-line-no">346</span><span id="line-346">    }</span>
+<span class="source-line-no">347</span><span id="line-347"></span>
+<span class="source-line-no">348</span><span id="line-348">    /**</span>
+<span class="source-line-no">349</span><span id="line-349">     * If there are 
any listeners, send them the reply details.</span>
+<span class="source-line-no">350</span><span id="line-350">     *</span>
+<span class="source-line-no">351</span><span id="line-351">     * @param 
replyCode the code extracted from the reply</span>
+<span class="source-line-no">352</span><span id="line-352">     * @param reply 
    the full reply text</span>
+<span class="source-line-no">353</span><span id="line-353">     * @since 
3.0</span>
+<span class="source-line-no">354</span><span id="line-354">     */</span>
+<span class="source-line-no">355</span><span id="line-355">    protected void 
fireReplyReceived(final int replyCode, final String reply) {</span>
+<span class="source-line-no">356</span><span id="line-356">        if 
(getCommandSupport().getListenerCount() &gt; 0) {</span>
+<span class="source-line-no">357</span><span id="line-357">            
getCommandSupport().fireReplyReceived(replyCode, reply);</span>
+<span class="source-line-no">358</span><span id="line-358">        }</span>
+<span class="source-line-no">359</span><span id="line-359">    }</span>
+<span class="source-line-no">360</span><span id="line-360"></span>
+<span class="source-line-no">361</span><span id="line-361">    /**</span>
+<span class="source-line-no">362</span><span id="line-362">     * Gets the 
charset.</span>
+<span class="source-line-no">363</span><span id="line-363">     *</span>
+<span class="source-line-no">364</span><span id="line-364">     * @return the 
charset.</span>
+<span class="source-line-no">365</span><span id="line-365">     * @since 
3.3</span>
+<span class="source-line-no">366</span><span id="line-366">     */</span>
+<span class="source-line-no">367</span><span id="line-367">    public Charset 
getCharset() {</span>
+<span class="source-line-no">368</span><span id="line-368">        return 
charset;</span>
+<span class="source-line-no">369</span><span id="line-369">    }</span>
+<span class="source-line-no">370</span><span id="line-370"></span>
+<span class="source-line-no">371</span><span id="line-371">    /**</span>
+<span class="source-line-no">372</span><span id="line-372">     * Gets the 
charset name.</span>
+<span class="source-line-no">373</span><span id="line-373">     *</span>
+<span class="source-line-no">374</span><span id="line-374">     * @return the 
charset.</span>
+<span class="source-line-no">375</span><span id="line-375">     * @since 
3.3</span>
+<span class="source-line-no">376</span><span id="line-376">     * @deprecated 
Since the code now requires Java 1.6 as a minimum</span>
+<span class="source-line-no">377</span><span id="line-377">     */</span>
+<span class="source-line-no">378</span><span id="line-378">    
@Deprecated</span>
+<span class="source-line-no">379</span><span id="line-379">    public String 
getCharsetName() {</span>
+<span class="source-line-no">380</span><span id="line-380">        return 
charset.name();</span>
+<span class="source-line-no">381</span><span id="line-381">    }</span>
+<span class="source-line-no">382</span><span id="line-382"></span>
+<span class="source-line-no">383</span><span id="line-383">    /**</span>
+<span class="source-line-no">384</span><span id="line-384">     * Subclasses 
can override this if they need to provide their own instance field for 
backwards compatibility.</span>
+<span class="source-line-no">385</span><span id="line-385">     *</span>
+<span class="source-line-no">386</span><span id="line-386">     * @return the 
CommandSupport instance, may be {@code null}</span>
+<span class="source-line-no">387</span><span id="line-387">     * @since 
3.0</span>
+<span class="source-line-no">388</span><span id="line-388">     */</span>
+<span class="source-line-no">389</span><span id="line-389">    protected 
ProtocolCommandSupport getCommandSupport() {</span>
+<span class="source-line-no">390</span><span id="line-390">        return 
commandSupport;</span>
+<span class="source-line-no">391</span><span id="line-391">    }</span>
+<span class="source-line-no">392</span><span id="line-392"></span>
+<span class="source-line-no">393</span><span id="line-393">    /**</span>
+<span class="source-line-no">394</span><span id="line-394">     * Gets the 
underlying socket connection timeout.</span>
+<span class="source-line-no">395</span><span id="line-395">     *</span>
+<span class="source-line-no">396</span><span id="line-396">     * @return 
timeout (in ms)</span>
+<span class="source-line-no">397</span><span id="line-397">     * @since 
2.0</span>
+<span class="source-line-no">398</span><span id="line-398">     */</span>
+<span class="source-line-no">399</span><span id="line-399">    public int 
getConnectTimeout() {</span>
+<span class="source-line-no">400</span><span id="line-400">        return 
connectTimeout;</span>
+<span class="source-line-no">401</span><span id="line-401">    }</span>
+<span class="source-line-no">402</span><span id="line-402"></span>
+<span class="source-line-no">403</span><span id="line-403">    /**</span>
+<span class="source-line-no">404</span><span id="line-404">     * Returns the 
current value of the default port (stored in {@link #_defaultPort_ 
_defaultPort_ }).</span>
+<span class="source-line-no">405</span><span id="line-405">     *</span>
+<span class="source-line-no">406</span><span id="line-406">     * @return The 
current value of the default port.</span>
+<span class="source-line-no">407</span><span id="line-407">     */</span>
+<span class="source-line-no">408</span><span id="line-408">    public int 
getDefaultPort() {</span>
+<span class="source-line-no">409</span><span id="line-409">        return 
_defaultPort_;</span>
+<span class="source-line-no">410</span><span id="line-410">    }</span>
+<span class="source-line-no">411</span><span id="line-411"></span>
+<span class="source-line-no">412</span><span id="line-412">    /**</span>
+<span class="source-line-no">413</span><span id="line-413">     * Returns the 
default timeout in milliseconds that is used when opening a socket.</span>
+<span class="source-line-no">414</span><span id="line-414">     *</span>
+<span class="source-line-no">415</span><span id="line-415">     * @return The 
default timeout in milliseconds that is used when opening a socket.</span>
+<span class="source-line-no">416</span><span id="line-416">     */</span>
+<span class="source-line-no">417</span><span id="line-417">    public int 
getDefaultTimeout() {</span>
+<span class="source-line-no">418</span><span id="line-418">        return 
_timeout_;</span>
+<span class="source-line-no">419</span><span id="line-419">    }</span>
+<span class="source-line-no">420</span><span id="line-420"></span>
+<span class="source-line-no">421</span><span id="line-421">    /**</span>
+<span class="source-line-no">422</span><span id="line-422">     * Returns the 
current value of the SO_KEEPALIVE flag on the currently opened socket. 
Delegates to {@link Socket#getKeepAlive()}</span>
+<span class="source-line-no">423</span><span id="line-423">     *</span>
+<span class="source-line-no">424</span><span id="line-424">     * @return True 
if SO_KEEPALIVE is enabled.</span>
+<span class="source-line-no">425</span><span id="line-425">     * @throws 
SocketException      if there is a problem with the socket</span>
+<span class="source-line-no">426</span><span id="line-426">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">427</span><span id="line-427">     * @since 
2.2</span>
+<span class="source-line-no">428</span><span id="line-428">     */</span>
+<span class="source-line-no">429</span><span id="line-429">    public boolean 
getKeepAlive() throws SocketException {</span>
+<span class="source-line-no">430</span><span id="line-430">        return 
_socket_.getKeepAlive();</span>
+<span class="source-line-no">431</span><span id="line-431">    }</span>
+<span class="source-line-no">432</span><span id="line-432"></span>
+<span class="source-line-no">433</span><span id="line-433">    /**</span>
+<span class="source-line-no">434</span><span id="line-434">     * Returns the 
local address to which the client's socket is bound. Delegates to {@link 
Socket#getLocalAddress()}</span>
+<span class="source-line-no">435</span><span id="line-435">     *</span>
+<span class="source-line-no">436</span><span id="line-436">     * @return The 
local address to which the client's socket is bound.</span>
+<span class="source-line-no">437</span><span id="line-437">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">438</span><span id="line-438">     */</span>
+<span class="source-line-no">439</span><span id="line-439">    public 
InetAddress getLocalAddress() {</span>
+<span class="source-line-no">440</span><span id="line-440">        return 
_socket_.getLocalAddress();</span>
+<span class="source-line-no">441</span><span id="line-441">    }</span>
+<span class="source-line-no">442</span><span id="line-442"></span>
+<span class="source-line-no">443</span><span id="line-443">    /**</span>
+<span class="source-line-no">444</span><span id="line-444">     * Returns the 
port number of the open socket on the local host used for the connection. 
Delegates to {@link Socket#getLocalPort()}</span>
+<span class="source-line-no">445</span><span id="line-445">     *</span>
+<span class="source-line-no">446</span><span id="line-446">     * @return The 
port number of the open socket on the local host used for the connection.</span>
+<span class="source-line-no">447</span><span id="line-447">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">448</span><span id="line-448">     */</span>
+<span class="source-line-no">449</span><span id="line-449">    public int 
getLocalPort() {</span>
+<span class="source-line-no">450</span><span id="line-450">        return 
_socket_.getLocalPort();</span>
+<span class="source-line-no">451</span><span id="line-451">    }</span>
+<span class="source-line-no">452</span><span id="line-452"></span>
+<span class="source-line-no">453</span><span id="line-453">    /**</span>
+<span class="source-line-no">454</span><span id="line-454">     * Gets the 
proxy for use with all the connections.</span>
+<span class="source-line-no">455</span><span id="line-455">     *</span>
+<span class="source-line-no">456</span><span id="line-456">     * @return the 
current proxy for connections.</span>
+<span class="source-line-no">457</span><span id="line-457">     */</span>
+<span class="source-line-no">458</span><span id="line-458">    public Proxy 
getProxy() {</span>
+<span class="source-line-no">459</span><span id="line-459">        return 
connProxy;</span>
+<span class="source-line-no">460</span><span id="line-460">    }</span>
+<span class="source-line-no">461</span><span id="line-461"></span>
+<span class="source-line-no">462</span><span id="line-462">    /**</span>
+<span class="source-line-no">463</span><span id="line-463">     * Gets the 
current receivedBuffer size</span>
+<span class="source-line-no">464</span><span id="line-464">     *</span>
+<span class="source-line-no">465</span><span id="line-465">     * @return the 
size, or -1 if not initialized</span>
+<span class="source-line-no">466</span><span id="line-466">     * @since 
3.0</span>
+<span class="source-line-no">467</span><span id="line-467">     */</span>
+<span class="source-line-no">468</span><span id="line-468">    protected int 
getReceiveBufferSize() {</span>
+<span class="source-line-no">469</span><span id="line-469">        return 
receiveBufferSize;</span>
+<span class="source-line-no">470</span><span id="line-470">    }</span>
+<span class="source-line-no">471</span><span id="line-471"></span>
+<span class="source-line-no">472</span><span id="line-472">    /**</span>
+<span class="source-line-no">473</span><span id="line-473">     * @return The 
remote address to which the client is connected. Delegates to {@link 
Socket#getInetAddress()}</span>
+<span class="source-line-no">474</span><span id="line-474">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">475</span><span id="line-475">     */</span>
+<span class="source-line-no">476</span><span id="line-476">    public 
InetAddress getRemoteAddress() {</span>
+<span class="source-line-no">477</span><span id="line-477">        return 
_socket_.getInetAddress();</span>
+<span class="source-line-no">478</span><span id="line-478">    }</span>
+<span class="source-line-no">479</span><span id="line-479"></span>
+<span class="source-line-no">480</span><span id="line-480">    /**</span>
+<span class="source-line-no">481</span><span id="line-481">     * Gets the 
remote socket address used for the connection.</span>
+<span class="source-line-no">482</span><span id="line-482">     *</span>
+<span class="source-line-no">483</span><span id="line-483">     * @return the 
remote socket address used for the connection</span>
+<span class="source-line-no">484</span><span id="line-484">     * @since 
3.10.0</span>
+<span class="source-line-no">485</span><span id="line-485">     */</span>
+<span class="source-line-no">486</span><span id="line-486">    protected 
InetSocketAddress getRemoteInetSocketAddress() {</span>
+<span class="source-line-no">487</span><span id="line-487">        return 
remoteInetSocketAddress;</span>
+<span class="source-line-no">488</span><span id="line-488">    }</span>
+<span class="source-line-no">489</span><span id="line-489"></span>
+<span class="source-line-no">490</span><span id="line-490">    /**</span>
+<span class="source-line-no">491</span><span id="line-491">     * Returns the 
port number of the remote host to which the client is connected. Delegates to 
{@link Socket#getPort()}</span>
+<span class="source-line-no">492</span><span id="line-492">     *</span>
+<span class="source-line-no">493</span><span id="line-493">     * @return The 
port number of the remote host to which the client is connected.</span>
+<span class="source-line-no">494</span><span id="line-494">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">495</span><span id="line-495">     */</span>
+<span class="source-line-no">496</span><span id="line-496">    public int 
getRemotePort() {</span>
+<span class="source-line-no">497</span><span id="line-497">        return 
_socket_.getPort();</span>
+<span class="source-line-no">498</span><span id="line-498">    }</span>
+<span class="source-line-no">499</span><span id="line-499"></span>
+<span class="source-line-no">500</span><span id="line-500">    /**</span>
+<span class="source-line-no">501</span><span id="line-501">     * Gets the 
current sendBuffer size</span>
+<span class="source-line-no">502</span><span id="line-502">     *</span>
+<span class="source-line-no">503</span><span id="line-503">     * @return the 
size, or -1 if not initialized</span>
+<span class="source-line-no">504</span><span id="line-504">     * @since 
3.0</span>
+<span class="source-line-no">505</span><span id="line-505">     */</span>
+<span class="source-line-no">506</span><span id="line-506">    protected int 
getSendBufferSize() {</span>
+<span class="source-line-no">507</span><span id="line-507">        return 
sendBufferSize;</span>
+<span class="source-line-no">508</span><span id="line-508">    }</span>
+<span class="source-line-no">509</span><span id="line-509"></span>
+<span class="source-line-no">510</span><span id="line-510">    /**</span>
+<span class="source-line-no">511</span><span id="line-511">     * Gets the 
underlying {@link ServerSocketFactory}</span>
+<span class="source-line-no">512</span><span id="line-512">     *</span>
+<span class="source-line-no">513</span><span id="line-513">     * @return The 
server socket factory</span>
+<span class="source-line-no">514</span><span id="line-514">     * @since 
2.2</span>
+<span class="source-line-no">515</span><span id="line-515">     */</span>
+<span class="source-line-no">516</span><span id="line-516">    public 
ServerSocketFactory getServerSocketFactory() {</span>
+<span class="source-line-no">517</span><span id="line-517">        return 
_serverSocketFactory_;</span>
+<span class="source-line-no">518</span><span id="line-518">    }</span>
+<span class="source-line-no">519</span><span id="line-519"></span>
+<span class="source-line-no">520</span><span id="line-520">    /**</span>
+<span class="source-line-no">521</span><span id="line-521">     * Returns the 
current SO_LINGER timeout of the currently opened socket.</span>
+<span class="source-line-no">522</span><span id="line-522">     *</span>
+<span class="source-line-no">523</span><span id="line-523">     * @return The 
current SO_LINGER timeout. If SO_LINGER is disabled returns -1.</span>
+<span class="source-line-no">524</span><span id="line-524">     * @throws 
SocketException      If the operation fails.</span>
+<span class="source-line-no">525</span><span id="line-525">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">526</span><span id="line-526">     */</span>
+<span class="source-line-no">527</span><span id="line-527">    public int 
getSoLinger() throws SocketException {</span>
+<span class="source-line-no">528</span><span id="line-528">        return 
_socket_.getSoLinger();</span>
+<span class="source-line-no">529</span><span id="line-529">    }</span>
+<span class="source-line-no">530</span><span id="line-530"></span>
+<span class="source-line-no">531</span><span id="line-531">    /**</span>
+<span class="source-line-no">532</span><span id="line-532">     * Returns the 
timeout in milliseconds of the currently opened socket.</span>
+<span class="source-line-no">533</span><span id="line-533">     *</span>
+<span class="source-line-no">534</span><span id="line-534">     * @return The 
timeout in milliseconds of the currently opened socket.</span>
+<span class="source-line-no">535</span><span id="line-535">     * @throws 
SocketException      If the operation fails.</span>
+<span class="source-line-no">536</span><span id="line-536">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">537</span><span id="line-537">     */</span>
+<span class="source-line-no">538</span><span id="line-538">    public int 
getSoTimeout() throws SocketException {</span>
+<span class="source-line-no">539</span><span id="line-539">        return 
_socket_.getSoTimeout();</span>
+<span class="source-line-no">540</span><span id="line-540">    }</span>
+<span class="source-line-no">541</span><span id="line-541"></span>
+<span class="source-line-no">542</span><span id="line-542">    /**</span>
+<span class="source-line-no">543</span><span id="line-543">     * Returns true 
if Nagle's algorithm is enabled on the currently opened socket.</span>
+<span class="source-line-no">544</span><span id="line-544">     *</span>
+<span class="source-line-no">545</span><span id="line-545">     * @return True 
if Nagle's algorithm is enabled on the currently opened socket, false 
otherwise.</span>
+<span class="source-line-no">546</span><span id="line-546">     * @throws 
SocketException      If the operation fails.</span>
+<span class="source-line-no">547</span><span id="line-547">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">548</span><span id="line-548">     */</span>
+<span class="source-line-no">549</span><span id="line-549">    public boolean 
getTcpNoDelay() throws SocketException {</span>
+<span class="source-line-no">550</span><span id="line-550">        return 
_socket_.getTcpNoDelay();</span>
+<span class="source-line-no">551</span><span id="line-551">    }</span>
+<span class="source-line-no">552</span><span id="line-552"></span>
+<span class="source-line-no">553</span><span id="line-553">    /**</span>
+<span class="source-line-no">554</span><span id="line-554">     * Make various 
checks on the socket to test if it is available for use. Note that the only 
sure test is to use it, but these checks may help in some cases.</span>
+<span class="source-line-no">555</span><span id="line-555">     *</span>
+<span class="source-line-no">556</span><span id="line-556">     * @see &lt;a 
href="https://issues.apache.org/jira/browse/NET-350"&gt;NET-350&lt;/a&gt;</span>
+<span class="source-line-no">557</span><span id="line-557">     * @return 
{@code true} if the socket appears to be available for use</span>
+<span class="source-line-no">558</span><span id="line-558">     * @since 
3.0</span>
+<span class="source-line-no">559</span><span id="line-559">     */</span>
+<span class="source-line-no">560</span><span id="line-560">    
@SuppressWarnings("resource")</span>
+<span class="source-line-no">561</span><span id="line-561">    public boolean 
isAvailable() {</span>
+<span class="source-line-no">562</span><span id="line-562">        if 
(isConnected()) {</span>
+<span class="source-line-no">563</span><span id="line-563">            try 
{</span>
+<span class="source-line-no">564</span><span id="line-564">                if 
(_socket_.getInetAddress() == null) {</span>
+<span class="source-line-no">565</span><span id="line-565">                    
return false;</span>
+<span class="source-line-no">566</span><span id="line-566">                
}</span>
+<span class="source-line-no">567</span><span id="line-567">                if 
(_socket_.getPort() == 0) {</span>
+<span class="source-line-no">568</span><span id="line-568">                    
return false;</span>
+<span class="source-line-no">569</span><span id="line-569">                
}</span>
+<span class="source-line-no">570</span><span id="line-570">                if 
(_socket_.getRemoteSocketAddress() == null) {</span>
+<span class="source-line-no">571</span><span id="line-571">                    
return false;</span>
+<span class="source-line-no">572</span><span id="line-572">                
}</span>
+<span class="source-line-no">573</span><span id="line-573">                if 
(_socket_.isClosed()) {</span>
+<span class="source-line-no">574</span><span id="line-574">                    
return false;</span>
+<span class="source-line-no">575</span><span id="line-575">                
}</span>
+<span class="source-line-no">576</span><span id="line-576">                
/*</span>
+<span class="source-line-no">577</span><span id="line-577">                 * 
these aren't exact checks (a Socket can be half-open), but since we usually 
require two-way data transfer, we check these here too:</span>
+<span class="source-line-no">578</span><span id="line-578">                 
*/</span>
+<span class="source-line-no">579</span><span id="line-579">                if 
(_socket_.isInputShutdown()) {</span>
+<span class="source-line-no">580</span><span id="line-580">                    
return false;</span>
+<span class="source-line-no">581</span><span id="line-581">                
}</span>
+<span class="source-line-no">582</span><span id="line-582">                if 
(_socket_.isOutputShutdown()) {</span>
+<span class="source-line-no">583</span><span id="line-583">                    
return false;</span>
+<span class="source-line-no">584</span><span id="line-584">                
}</span>
+<span class="source-line-no">585</span><span id="line-585">                /* 
ignore the result, catch exceptions: */</span>
+<span class="source-line-no">586</span><span id="line-586">                // 
No need to close</span>
+<span class="source-line-no">587</span><span id="line-587">                
_socket_.getInputStream();</span>
+<span class="source-line-no">588</span><span id="line-588">                // 
No need to close</span>
+<span class="source-line-no">589</span><span id="line-589">                
_socket_.getOutputStream();</span>
+<span class="source-line-no">590</span><span id="line-590">            } catch 
(final IOException ioex) {</span>
+<span class="source-line-no">591</span><span id="line-591">                
return false;</span>
+<span class="source-line-no">592</span><span id="line-592">            }</span>
+<span class="source-line-no">593</span><span id="line-593">            return 
true;</span>
+<span class="source-line-no">594</span><span id="line-594">        }</span>
+<span class="source-line-no">595</span><span id="line-595">        return 
false;</span>
+<span class="source-line-no">596</span><span id="line-596">    }</span>
+<span class="source-line-no">597</span><span id="line-597"></span>
+<span class="source-line-no">598</span><span id="line-598">    /**</span>
+<span class="source-line-no">599</span><span id="line-599">     * Returns true 
if the client is currently connected to a server.</span>
+<span class="source-line-no">600</span><span id="line-600">     *</span>
+<span class="source-line-no">601</span><span id="line-601">     * Delegates to 
{@link Socket#isConnected()}</span>
+<span class="source-line-no">602</span><span id="line-602">     *</span>
+<span class="source-line-no">603</span><span id="line-603">     * @return True 
if the client is currently connected to a server, false otherwise.</span>
+<span class="source-line-no">604</span><span id="line-604">     */</span>
+<span class="source-line-no">605</span><span id="line-605">    public boolean 
isConnected() {</span>
+<span class="source-line-no">606</span><span id="line-606">        if 
(_socket_ == null) {</span>
+<span class="source-line-no">607</span><span id="line-607">            return 
false;</span>
+<span class="source-line-no">608</span><span id="line-608">        }</span>
+<span class="source-line-no">609</span><span id="line-609"></span>
+<span class="source-line-no">610</span><span id="line-610">        return 
_socket_.isConnected();</span>
+<span class="source-line-no">611</span><span id="line-611">    }</span>
+<span class="source-line-no">612</span><span id="line-612"></span>
+<span class="source-line-no">613</span><span id="line-613">    /**</span>
+<span class="source-line-no">614</span><span id="line-614">     * Removes a 
ProtocolCommandListener.</span>
+<span class="source-line-no">615</span><span id="line-615">     *</span>
+<span class="source-line-no">616</span><span id="line-616">     * @param 
listener The ProtocolCommandListener to remove.</span>
+<span class="source-line-no">617</span><span id="line-617">     * @since 
3.0</span>
+<span class="source-line-no">618</span><span id="line-618">     */</span>
+<span class="source-line-no">619</span><span id="line-619">    public void 
removeProtocolCommandListener(final ProtocolCommandListener listener) {</span>
+<span class="source-line-no">620</span><span id="line-620">        
getCommandSupport().removeProtocolCommandListener(listener);</span>
+<span class="source-line-no">621</span><span id="line-621">    }</span>
+<span class="source-line-no">622</span><span id="line-622"></span>
+<span class="source-line-no">623</span><span id="line-623">    /**</span>
+<span class="source-line-no">624</span><span id="line-624">     * Sets the 
charset.</span>
+<span class="source-line-no">625</span><span id="line-625">     *</span>
+<span class="source-line-no">626</span><span id="line-626">     * @param 
charset the charset.</span>
+<span class="source-line-no">627</span><span id="line-627">     * @since 
3.3</span>
+<span class="source-line-no">628</span><span id="line-628">     */</span>
+<span class="source-line-no">629</span><span id="line-629">    public void 
setCharset(final Charset charset) {</span>
+<span class="source-line-no">630</span><span id="line-630">        
this.charset = charset;</span>
+<span class="source-line-no">631</span><span id="line-631">    }</span>
+<span class="source-line-no">632</span><span id="line-632"></span>
+<span class="source-line-no">633</span><span id="line-633">    /**</span>
+<span class="source-line-no">634</span><span id="line-634">     * Sets the 
connection timeout in milliseconds, which will be passed to the {@link Socket} 
object's connect() method.</span>
+<span class="source-line-no">635</span><span id="line-635">     *</span>
+<span class="source-line-no">636</span><span id="line-636">     * @param 
connectTimeout The connection timeout to use (in ms)</span>
+<span class="source-line-no">637</span><span id="line-637">     * @since 
2.0</span>
+<span class="source-line-no">638</span><span id="line-638">     */</span>
+<span class="source-line-no">639</span><span id="line-639">    public void 
setConnectTimeout(final int connectTimeout) {</span>
+<span class="source-line-no">640</span><span id="line-640">        
this.connectTimeout = connectTimeout;</span>
+<span class="source-line-no">641</span><span id="line-641">    }</span>
+<span class="source-line-no">642</span><span id="line-642"></span>
+<span class="source-line-no">643</span><span id="line-643">    /**</span>
+<span class="source-line-no">644</span><span id="line-644">     * Sets the 
default port the SocketClient should connect to when a port is not specified. 
The {@link #_defaultPort_ _defaultPort_ } variable stores this</span>
+<span class="source-line-no">645</span><span id="line-645">     * value. If 
never set, the default port is equal to zero.</span>
+<span class="source-line-no">646</span><span id="line-646">     *</span>
+<span class="source-line-no">647</span><span id="line-647">     * @param port 
The default port to set.</span>
+<span class="source-line-no">648</span><span id="line-648">     */</span>
+<span class="source-line-no">649</span><span id="line-649">    public void 
setDefaultPort(final int port) {</span>
+<span class="source-line-no">650</span><span id="line-650">        
_defaultPort_ = port;</span>
+<span class="source-line-no">651</span><span id="line-651">    }</span>
+<span class="source-line-no">652</span><span id="line-652"></span>
+<span class="source-line-no">653</span><span id="line-653">    /**</span>
+<span class="source-line-no">654</span><span id="line-654">     * Sets the 
default timeout in milliseconds to use when opening a socket. This value is 
only used previous to a call to {@link #connect connect()} and</span>
+<span class="source-line-no">655</span><span id="line-655">     * should not 
be confused with {@link #setSoTimeout setSoTimeout()} which operates on the 
currently opened socket. _timeout_ contains the new timeout value.</span>
+<span class="source-line-no">656</span><span id="line-656">     *</span>
+<span class="source-line-no">657</span><span id="line-657">     * @param 
timeout The timeout in milliseconds to use for the socket connection.</span>
+<span class="source-line-no">658</span><span id="line-658">     */</span>
+<span class="source-line-no">659</span><span id="line-659">    public void 
setDefaultTimeout(final int timeout) {</span>
+<span class="source-line-no">660</span><span id="line-660">        _timeout_ = 
timeout;</span>
+<span class="source-line-no">661</span><span id="line-661">    }</span>
+<span class="source-line-no">662</span><span id="line-662"></span>
+<span class="source-line-no">663</span><span id="line-663">    /**</span>
+<span class="source-line-no">664</span><span id="line-664">     * Sets the 
SO_KEEPALIVE flag on the currently opened socket.</span>
+<span class="source-line-no">665</span><span id="line-665">     *</span>
+<span class="source-line-no">666</span><span id="line-666">     * From the 
Javadocs, the default keepalive time is 2 hours (although this is 
implementation dependent). It looks as though the Windows WSA sockets</span>
+<span class="source-line-no">667</span><span id="line-667">     * 
implementation allows a specific keepalive value to be set, although this seems 
not to be the case on other systems.</span>
+<span class="source-line-no">668</span><span id="line-668">     *</span>
+<span class="source-line-no">669</span><span id="line-669">     * @param 
keepAlive If true, keepAlive is turned on</span>
+<span class="source-line-no">670</span><span id="line-670">     * @throws 
SocketException      if there is a problem with the socket</span>
+<span class="source-line-no">671</span><span id="line-671">     * @throws 
NullPointerException if the socket is not currently open</span>
+<span class="source-line-no">672</span><span id="line-672">     * @since 
2.2</span>
+<span class="source-line-no">673</span><span id="line-673">     */</span>
+<span class="source-line-no">674</span><span id="line-674">    public void 
setKeepAlive(final boolean keepAlive) throws SocketException {</span>
+<span class="source-line-no">675</span><span id="line-675">        
_socket_.setKeepAlive(keepAlive);</span>
+<span class="source-line-no">676</span><span id="line-676">    }</span>
+<span class="source-line-no">677</span><span id="line-677"></span>
+<span class="source-line-no">678</span><span id="line-678">    /**</span>
+<span class="source-line-no">679</span><span id="line-679">     * Sets the 
proxy for use with all the connections. The proxy is used for connections 
established after the call to this method.</span>
+<span class="source-line-no">680</span><span id="line-680">     *</span>
+<span class="source-line-no">681</span><span id="line-681">     * @param proxy 
the new proxy for connections.</span>
+<span class="source-line-no">682</span><span id="line-682">     * @since 
3.2</span>
+<span class="source-line-no">683</span><span id="line-683">     */</span>
+<span class="source-line-no">684</span><span id="line-684">    public void 
setProxy(final Proxy proxy) {</span>
+<span class="source-line-no">685</span><span id="line-685">        
setSocketFactory(new DefaultSocketFactory(proxy));</span>
+<span class="source-line-no">686</span><span id="line-686">        connProxy = 
proxy;</span>
+<span class="source-line-no">687</span><span id="line-687">    }</span>
+<span class="source-line-no">688</span><span id="line-688"></span>
+<span class="source-line-no">689</span><span id="line-689">    /**</span>
+<span class="source-line-no">690</span><span id="line-690">     * Sets the 
underlying socket receive buffer size.</span>
+<span class="source-line-no">691</span><span id="line-691">     *</span>
+<span class="source-line-no">692</span><span id="line-692">     * @param size 
The size of the buffer in bytes.</span>
+<span class="source-line-no">693</span><span id="line-693">     * @throws 
SocketException never (but subclasses may wish to do so)</span>
+<span class="source-line-no">694</span><span id="line-694">     * @since 
2.0</span>
+<span class="source-line-no">695</span><span id="line-695">     */</span>
+<span class="source-line-no">696</span><span id="line-696">    
@SuppressWarnings("unused") // subclasses may throw SocketException</span>
+<span class="source-line-no">697</span><span id="line-697">    public void 
setReceiveBufferSize(final int size) throws SocketException {</span>
+<span class="source-line-no">698</span><span id="line-698">        
receiveBufferSize = size;</span>
+<span class="source-line-no">699</span><span id="line-699">    }</span>
+<span class="source-line-no">700</span><span id="line-700"></span>
+<span class="source-line-no">701</span><span id="line-701">    /**</span>
+<span class="source-line-no">702</span><span id="line-702">     * Sets the 
underlying socket send buffer size.</span>
+<span class="source-line-no">703</span><span id="line-703">     *</span>
+<span class="source-line-no">704</span><span id="line-704">     * @param size 
The size of the buffer in bytes.</span>
+<span class="source-line-no">705</span><span id="line-705">     * @throws 
SocketException never thrown, but subclasses might want to do so</span>
+<span class="source-line-no">706</span><span id="line-706">     * @since 
2.0</span>
+<span class="source-line-no">707</span><span id="line-707">     */</span>
+<span class="source-line-no">708</span><span id="line-708">    
@SuppressWarnings("unused") // subclasses may throw SocketException</span>
+<span class="source-line-no">709</span><span id="line-709">    public void 
setSendBufferSize(final int size) throws SocketException {</span>
+<span class="source-line-no">710</span><span id="line-710">        
sendBufferSize = size;</span>
+<span class="source-line-no">711</span><span id="line-711">    }</span>
+<span class="source-line-no">712</span><span id="line-712"></span>
+<span class="source-line-no">713</span><span id="line-713">    /**</span>
+<span class="source-line-no">714</span><span id="line-714">     * Sets the 
ServerSocketFactory used by the SocketClient to open ServerSocket connections. 
If the factory value is null, then a default factory is used</span>
+<span class="source-line-no">715</span><span id="line-715">     * (only do 
this to reset the factory after having previously altered it).</span>
+<span class="source-line-no">716</span><span id="line-716">     *</span>
+<span class="source-line-no">717</span><span id="line-717">     * @param 
factory The new ServerSocketFactory the SocketClient should use.</span>
+<span class="source-line-no">718</span><span id="line-718">     * @since 
2.0</span>
+<span class="source-line-no">719</span><span id="line-719">     */</span>
+<span class="source-line-no">720</span><span id="line-720">    public void 
setServerSocketFactory(final ServerSocketFactory factory) {</span>
+<span class="source-line-no">721</span><span id="line-721">        if (factory 
== null) {</span>
+<span class="source-line-no">722</span><span id="line-722">            
_serverSocketFactory_ = DEFAULT_SERVER_SOCKET_FACTORY;</span>
+<span class="source-line-no">723</span><span id="line-723">        } else 
{</span>
+<span class="source-line-no">724</span><span id="line-724">            
_serverSocketFactory_ = factory;</span>
+<span class="source-line-no">725</span><span id="line-725">        }</span>
+<span class="source-line-no">726</span><span id="line-726">    }</span>
+<span class="source-line-no">727</span><span id="line-727"></span>
+<span class="source-line-no">728</span><span id="line-728">    /**</span>
+<span class="source-line-no">729</span><span id="line-729">     * Sets the 
SocketFactory used by the SocketClient to open socket connections. If the 
factory value is null, then a default factory is used (only do this to</span>
+<span class="source-line-no">730</span><span id="line-730">     * reset the 
factory after having previously altered it). Any proxy setting is 
discarded.</span>
+<span class="source-line-no">731</span><span id="line-731">     *</span>
+<span class="source-line-no">732</span><span id="line-732">     * @param 
factory The new SocketFactory the SocketClient should use.</span>
+<span class="source-line-no">733</span><span id="line-733">     */</span>
+<span class="source-line-no">734</span><span id="line-734">    public void 
setSocketFactory(final SocketFactory factory) {</span>

[... 77 lines stripped ...]


Reply via email to