You need to pass in the port info that the server printed - just copy/paste the line below "server available at".
On Apr 12, 2013, at 10:58 PM, John Chludzinski <john.chludzin...@gmail.com> wrote: > Found the following client-server example (code) on > http://www.mpi-forum.org and I'm trying to get it to work. Not sure > what argv[1] should be for the client? The output from the server > side is: > > server available at > 4094230528.0;tcp://192.168.1.4:55803+4094230529.0;tcp://192.168.1.4:51618:300 > > > // SERVER > #include <stdio.h> > #include <error.h> > #include <errno.h> > #include "mpi.h" > > #define MAX_DATA 100 > #define FATAL 1 > > int main( int argc, char **argv ) > { > MPI_Comm client; > MPI_Status status; > char port_name[MPI_MAX_PORT_NAME]; > double buf[MAX_DATA]; > int size, again; > > MPI_Init( &argc, &argv ); > MPI_Comm_size(MPI_COMM_WORLD, &size); > if (size != 1) error(FATAL, errno, "Server too big"); > MPI_Open_port(MPI_INFO_NULL, port_name); > printf("server available at %s\n",port_name); > > while (1) > { > MPI_Comm_accept( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &client ); > again = 1; > > while (again) > { > MPI_Recv( buf, MAX_DATA, MPI_DOUBLE, MPI_ANY_SOURCE, > MPI_ANY_TAG, client, &status ); > > switch (status.MPI_TAG) > { > case 0: MPI_Comm_free( &client ); > MPI_Close_port(port_name); > MPI_Finalize(); > return 0; > case 1: MPI_Comm_disconnect( &client ); > again = 0; > break; > case 2: /* do something */ > fprintf( stderr, "Do something ...\n" ); > default: > /* Unexpected message type */ > MPI_Abort( MPI_COMM_WORLD, 1 ); > } > } > } > } > > //CLIENT > #include <string.h> > #include "mpi.h" > > #define MAX_DATA 100 > > int main( int argc, char **argv ) > { > MPI_Comm server; > double buf[MAX_DATA]; > char port_name[MPI_MAX_PORT_NAME]; > int done = 0, tag, n, CNT=0; > > MPI_Init( &argc, &argv ); > strcpy(port_name, argv[1] ); /* assume server's name is cmd-line arg */ > > MPI_Comm_connect( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &server ); > > n = MAX_DATA; > > while (!done) > { > tag = 2; /* Action to perform */ > if ( CNT == 5 ) { tag = 0; done = 1; } > MPI_Send( buf, n, MPI_DOUBLE, 0, tag, server ); > CNT++; > /* etc */ > } > > MPI_Send( buf, 0, MPI_DOUBLE, 0, 1, server ); > MPI_Comm_disconnect( &server ); > MPI_Finalize(); > > return 0; > } > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users