private void initialize() {
    try {
      SSLContext sslContext = SSLContext.getInstance(protocols[0]);
      sslContext.init(keyManagers, trustManagers, null);

      SSLSocketFactory socketFactory = sslContext.getSocketFactory();
      socket = (SSLSocket) socketFactory.createSocket(getRemoteInetAddress(), getAuthPort());
      socket.setReuseAddress(true);
      socket.setSoTimeout(getSocketTimeout() * 1000);
      socket.setEnabledProtocols(protocols);

      if (getAcctPort() != getAuthPort()) {
        socketAcct = (SSLSocket) socketFactory.createSocket(getRemoteInetAddress(), getAcctPort());
        socketAcct.setReuseAddress(true);
        socketAcct.setSoTimeout(getSocketTimeout() * 1000);
        socketAcct.setEnabledProtocols(protocols);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 public void setReuseAddress(final boolean on) throws SocketException {
   delegate.setReuseAddress(on);
 }