code: public Xdr sendAndWait(String serverIP, int port, boolean usePrivilegedPort, Xdr xdrRequest, int timeout) throws RpcException {
          InetSocketAddress key = InetSocketAddress.createUnresolved(serverIP, port);
  
          Map<InetSocketAddress, Connection> connectionMap = usePrivilegedPort ? _privilegedConnectionMap : _connectionMap;
          Connection connection = connectionMap.get(key);
          if (connection == null) {
              connection = new Connection(serverIP, port, usePrivilegedPort);
              connectionMap.put(key, connection);
              connection.connect();
          }
  
          return connection.sendAndWait(timeout, xdrRequest);
      }
docs: Basic RPC call functionality only. Send the request, creating a new
  connection as necessary, and return the raw Xdr returned.
  
  @param serverIP
  The endpoint of the server being called.
  @param port
  The remote host port being called for this operation.
  @param usePrivilegedPort
  <ul>
  <li>If <code>true</code>, use a privileged local port (below
  1024) for RPC communication.</li>
  <li>If <code>false</code>, use any non-privileged local port
  for RPC communication.</li>
  </ul>
  @param xdrRequest
  The Xdr data for the request.
  @param timeout
  The timeout in seconds.
  @return The Xdr data for the response.
  @throws RpcException