9. Ejemplo de llamada a procedimiento remoto #include <stdio.h> #include "msg.h" /* archivo de definición RPC */ main(argc, argv) int argc; char *argv[]; { CLIENT *clnt; int *result; char *server; char *message; if (argc != 3) { fprintf(stderr, "uso: %s host mensaje", argv[0]); return 1; } server = argv[1]; message = argv[2]; /* crea un manejador del procedimiento remoto */ clnt = clnt_create(server, /*servidor*/ MESSAGEPROG, /*N° Prog*/ PRINTMESSAGEVERS, /*N° Ver*/ ” udp” /*Transp*/ ); if (clnt == (CLIENT *)NULL) { /* Si no hay comunicacion con el servidor, se imprime mensaje de error */ clnt_pcreateerror(server); return 1; }
10. Ejemplo de una Llamada a procedimiento remoto /* Llamada a procedimiento remoto */ result = printmessage_1(&message, clnt); if (result == (int *)NULL) { /* Si hay un error mientras se llama al procedimiento remoto */ clnt_perror(clnt, server); return 1; } if (*result == 0) { /* Si el servidor tuvo problema para imprimir nuestro mensaje */ fprintf(stderr,"%s: no se pudo imprimir su mensaje ",argv[0]); return 1; } /* El mensaje fue impreso en la consola del servidor */ printf("Mensaje enviado a %s", server); clnt_destroy( clnt ); return 0; }
11. Procedimiento remoto #include <stdio.h> #include "msg.h" int * printmessage_1(msg, req) char **msg; struct svc_req req; /* detalles de la llamada */ { static int result; result = 0; printf("%s", *msg); result = 1; return (&result); }