org.apache.commons.net.io

## Class SocketOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - java.io.FilterOutputStream
    - - org.apache.commons.net.io.SocketOutputStream

- All Implemented Interfaces:
    Closeable, Flushable, AutoCloseable

      public class SocketOutputStream
      extends FilterOutputStream

  This class wraps an output stream, storing a reference to its originating socket. When the stream is closed, it will also close the socket immediately afterward. This class is useful for situations where you are dealing with a stream originating from a socket, but do not have a reference to the socket, and want to make sure it closes when the stream closes.
  See Also:
    `SocketInputStream`

- - ### Field Summary

    - ### Fields inherited from class java.io.FilterOutputStream

      `out`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SocketOutputStream(Socket socket, OutputStream stream)` Creates a SocketOutputStream instance wrapping an output stream and storing a reference to a socket that should be closed on closing the stream.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Closes the stream and immediately afterward closes the referenced socket.
    `void` | `write(byte[] buffer, int offset, int length)` Writes a number of bytes from a byte array to the stream starting from a given offset.

    - ### Methods inherited from class java.io.FilterOutputStream

      `flush, write, write`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SocketOutputStream

          public SocketOutputStream(Socket socket,
                                    OutputStream stream)

      Creates a SocketOutputStream instance wrapping an output stream and storing a reference to a socket that should be closed on closing the stream.
      Parameters:
        `socket` - The socket to close on closing the stream.
        `stream` - The input stream to wrap.

  - ### Method Detail

    - #### close

          public void close()
                     throws IOException

      Closes the stream and immediately afterward closes the referenced socket.
      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `FilterOutputStream`
      Throws:
        `IOException` - If there is an error in closing the stream or socket.

    - #### write

          public void write(byte[] buffer,
                            int offset,
                            int length)
                     throws IOException

      Writes a number of bytes from a byte array to the stream starting from a given offset. This method bypasses the equivalent method in FilterOutputStream because the FilterOutputStream implementation is very inefficient.
      Overrides:
        `write` in class `FilterOutputStream`
      Parameters:
        `buffer` - The byte array to write.
        `offset` - The offset into the array at which to start copying data.
        `length` - The number of bytes to write.
      Throws:
        `IOException` - If an error occurs while writing to the underlying stream.