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() > 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() > 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 <a
href="https://issues.apache.org/jira/browse/NET-350">NET-350</a></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"> *
<p></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() > 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() > 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 <a
href="https://issues.apache.org/jira/browse/NET-350">NET-350</a></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 ...]