## org.apache.http.impl
Class SocketHttpClientConnection

    java.lang.Object
      org.apache.http.impl.AbstractHttpClientConnection
          org.apache.http.impl.SocketHttpClientConnection

All Implemented Interfaces:
  Closeable, HttpClientConnection, HttpConnection, HttpInetConnection

Direct Known Subclasses:
  DefaultHttpClientConnection

    @NotThreadSafe
    public class SocketHttpClientConnection

extends AbstractHttpClientConnection
implements HttpInetConnection

Implementation of a client-side HTTP connection that can be bound to an arbitrary `Socket` for receiving data from and transmitting data to a remote server.

The following parameters can be used to customize the behavior of this class:

- `CoreProtocolPNames.STRICT_TRANSFER_ENCODING`
- `CoreProtocolPNames.HTTP_ELEMENT_CHARSET`
- `CoreConnectionPNames.SOCKET_BUFFER_SIZE`
- `CoreConnectionPNames.MAX_LINE_LENGTH`
- `CoreConnectionPNames.MAX_HEADER_COUNT`
- `CoreConnectionPNames.MIN_CHUNK_LIMIT`

Since:
  4.0

Constructor Summary
`SocketHttpClientConnection()`

Method Summary
`protected void` `assertNotOpen()`
`protected void` `assertOpen()` Asserts if the connection is open.
`protected void` `bind(Socket socket, HttpParams params)` Binds this connection to the given `Socket`.
`void` `close()` Closes this connection gracefully.
`protected SessionInputBuffer` `createSessionInputBuffer(Socket socket, int buffersize, HttpParams params)` Creates an instance of `SocketInputBuffer` to be used for receiving data from the given `Socket`.
`protected SessionOutputBuffer` `createSessionOutputBuffer(Socket socket, int buffersize, HttpParams params)` Creates an instance of `SessionOutputBuffer` to be used for sending data to the given `Socket`.
`InetAddress` `getLocalAddress()`
`int` `getLocalPort()`
`InetAddress` `getRemoteAddress()`
`int` `getRemotePort()`
`protected Socket` `getSocket()`
`int` `getSocketTimeout()` Returns the socket timeout value.
`boolean` `isOpen()` Checks if this connection is open.
`void` `setSocketTimeout(int timeout)` Sets the socket timeout value.
`void` `shutdown()` Force-closes this connection.
`String` `toString()`

Methods inherited from class org.apache.http.impl.AbstractHttpClientConnection
`createConnectionMetrics, createEntityDeserializer, createEntitySerializer, createHttpResponseFactory, createRequestWriter, createResponseParser, doFlush, flush, getMetrics, init, isEof, isResponseAvailable, isStale, receiveResponseEntity, receiveResponseHeader, sendRequestEntity, sendRequestHeader`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.apache.http.HttpConnection
`getMetrics, isStale`

Constructor Detail

### SocketHttpClientConnection

    public SocketHttpClientConnection()

Method Detail

### assertNotOpen

    protected void assertNotOpen()

### assertOpen

    protected void assertOpen()

  Description copied from class: `AbstractHttpClientConnection`
  Asserts if the connection is open.

  Specified by:
    `assertOpen` in class `AbstractHttpClientConnection`

### createSessionInputBuffer

    protected SessionInputBuffer createSessionInputBuffer(Socket socket,
                                                          int buffersize,
                                                          HttpParams params)
                                                   throws IOException

  Creates an instance of `SocketInputBuffer` to be used for receiving data from the given `Socket`.

  This method can be overridden in a super class in order to provide a custom implementation of `SessionInputBuffer` interface.

  Parameters:
    `socket` - the socket.
    `buffersize` - the buffer size.
    `params` - HTTP parameters.
  Returns:
    session input buffer.
  Throws:
    `IOException` - in case of an I/O error.
  See Also:
    `SocketInputBuffer.SocketInputBuffer(Socket, int, HttpParams)`

### createSessionOutputBuffer

    protected SessionOutputBuffer createSessionOutputBuffer(Socket socket,
                                                            int buffersize,
                                                            HttpParams params)
                                                     throws IOException

  Creates an instance of `SessionOutputBuffer` to be used for sending data to the given `Socket`.

  This method can be overridden in a super class in order to provide a custom implementation of `SocketOutputBuffer` interface.

  Parameters:
    `socket` - the socket.
    `buffersize` - the buffer size.
    `params` - HTTP parameters.
  Returns:
    session output buffer.
  Throws:
    `IOException` - in case of an I/O error.
  See Also:
    `SocketOutputBuffer.SocketOutputBuffer(Socket, int, HttpParams)`

### bind

    protected void bind(Socket socket,
                        HttpParams params)
                 throws IOException

  Binds this connection to the given `Socket`. This socket will be used by the connection to send and receive data.

  This method will invoke `createSessionInputBuffer(Socket, int, HttpParams)` and `createSessionOutputBuffer(Socket, int, HttpParams)` methods to create session input / output buffers bound to this socket and then will invoke `AbstractHttpClientConnection.init(SessionInputBuffer, SessionOutputBuffer, HttpParams)` method to pass references to those buffers to the underlying HTTP message parser and formatter.

  After this method's execution the connection status will be reported as open and the `isOpen()` will return `true`.

  Parameters:
    `socket` - the socket.
    `params` - HTTP parameters.
  Throws:
    `IOException` - in case of an I/O error.

### isOpen

    public boolean isOpen()

  Description copied from interface: `HttpConnection`
  Checks if this connection is open.

  Specified by:
    `isOpen` in interface `HttpConnection`
  Returns:
    true if it is open, false if it is closed.

### getSocket

    protected Socket getSocket()

### getLocalAddress

    public InetAddress getLocalAddress()

  Specified by:
    `getLocalAddress` in interface `HttpInetConnection`

### getLocalPort

    public int getLocalPort()

  Specified by:
    `getLocalPort` in interface `HttpInetConnection`

### getRemoteAddress

    public InetAddress getRemoteAddress()

  Specified by:
    `getRemoteAddress` in interface `HttpInetConnection`

### getRemotePort

    public int getRemotePort()

  Specified by:
    `getRemotePort` in interface `HttpInetConnection`

### setSocketTimeout

    public void setSocketTimeout(int timeout)

  Description copied from interface: `HttpConnection`
  Sets the socket timeout value.

  Specified by:
    `setSocketTimeout` in interface `HttpConnection`
  Parameters:
    `timeout` - timeout value in milliseconds

### getSocketTimeout

    public int getSocketTimeout()

  Description copied from interface: `HttpConnection`
  Returns the socket timeout value.

  Specified by:
    `getSocketTimeout` in interface `HttpConnection`
  Returns:
    positive value in milliseconds if a timeout is set, `0` if timeout is disabled or `-1` if timeout is undefined.

### shutdown

    public void shutdown()
                  throws IOException

  Description copied from interface: `HttpConnection`
  Force-closes this connection. This is the only method of a connection which may be called from a different thread to terminate the connection. This method will not attempt to flush the transmitter's internal buffer prior to closing the underlying socket.

  Specified by:
    `shutdown` in interface `HttpConnection`
  Throws:
    `IOException`

### close

    public void close()
               throws IOException

  Description copied from interface: `HttpConnection`
  Closes this connection gracefully. This method will attempt to flush the internal output buffer prior to closing the underlying socket. This method MUST NOT be called from a different thread to force shutdown of the connection. Use `shutdown` instead.

  Specified by:
    `close` in interface `Closeable`
  Specified by:
    `close` in interface `HttpConnection`
  Throws:
    `IOException`

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.