code: public void setReuseAddress(boolean on) throws SocketException {
          if (isClosed())
              throw new SocketException("Socket is closed");
          getImpl().setOption(SocketOptions.SO_REUSEADDR, Boolean.valueOf(on));
      }
docs: Enable/disable the SO_REUSEADDR socket option.
  <p>
  When a TCP connection is closed the connection may remain
  in a timeout state for a period of time after the connection
  is closed (typically known as the <tt>TIME_WAIT</tt> state
  or <tt>2MSL</tt> wait state).
  For applications using a well known socket address or port
  it may not be possible to bind a socket to the required
  <tt>SocketAddress</tt> if there is a connection in the
  timeout state involving the socket address or port.
  <p>
  Enabling <tt>SO_REUSEADDR</tt> prior to binding the socket
  using {@link #bind(SocketAddress)} allows the socket to be
  bound even though a previous connection is in a timeout
  state.
  <p>
  When a <tt>ServerSocket</tt> is created the initial setting
  of <tt>SO_REUSEADDR</tt> is not defined. Applications can
  use {@link #getReuseAddress()} to determine the initial
  setting of <tt>SO_REUSEADDR</tt>.
  <p>
  The behaviour when <tt>SO_REUSEADDR</tt> is enabled or
  disabled after a socket is bound (See {@link #isBound()})
  is not defined.
  
  @param on  whether to enable or disable the socket option
  @exception SocketException if an error occurs enabling or
  disabling the <tt>SO_RESUEADDR</tt> socket option,
  or the socket is closed.
  @since 1.4
  @see #getReuseAddress()
  @see #bind(SocketAddress)
  @see #isBound()
  @see #isClosed()