There is only one routine on the client side.
| MPI_COMM_CONNECT(port_name, info, root, comm, newcomm) | |
| IN port_name | network address (string, used only on root) | 
| IN info | implementation-dependent information (handle, used only on root) | 
| IN root | rank in comm of root node (integer) | 
| IN comm | intracommunicator over which call is collective (handle) | 
| OUT newcomm | intercommunicator with server as remote group (handle) | 
This routine establishes communication with a server specified by port_name. It is collective over the calling communicator and returns an intercommunicator in which the remote group participated in an MPI_COMM_ACCEPT.
If the named port does not exist (or has been closed), MPI_COMM_CONNECT raises an error of class MPI_ERR_PORT.
If the port exists, but does not have a pending MPI_COMM_ACCEPT, the connection attempt will eventually time out after an implementation-defined time, or succeed when the server calls MPI_COMM_ACCEPT. In the case of a time out, MPI_COMM_CONNECT raises an error of class MPI_ERR_PORT.
 
 
 
 Advice  
        to implementors.  
 
The time out period may be arbitrarily short or long. However, a high  
quality implementation will try to queue connection attempts so that a  
server can handle simultaneous requests from several clients.  A high  
quality implementation may also provide a mechanism, through the  info  
arguments to  MPI_OPEN_PORT,  MPI_COMM_ACCEPT and/or   
 MPI_COMM_CONNECT, for the user to  
control timeout and queuing behavior.  
 ( End of advice to implementors.) 
 
 MPI provides no guarantee of fairness in servicing connection   
attempts. That is, connection attempts are not necessarily satisfied  
in the order they were initiated and competition from other  
connection attempts may prevent a particular connection attempt  
from being satisfied.   
port_name is the address of the server. It must be the same as the name returned by MPI_OPEN_PORT on the server. Some freedom is allowed here. If there are equivalent forms of port_name, an implementation may accept them as well. For instance, if port_name is (hostname:port), an implementation may accept (ip_address:port) as well.