1 /* @(#)rprintmsg.c 2.1 88/08/11 4.0 RPCSRC */ 2 /* 3 * rprintmsg.c: remote version of "printmsg.c" 4 */ 5 #include <stdio.h> 6 #include <rpc/rpc.h> /* always need this */ 7 #include "msg.h" /* need this too: will be generated by rpcgen*/ 8 9 main(argc, argv) 10 int argc; 11 char *argv[]; 12 { 13 CLIENT *cl; 14 int *result; 15 char *server; 16 char *message; 17 18 if (argc < 3) { 19 fprintf(stderr, "usage: %s host message\n", argv[0]); 20 exit(1); 21 } 22 23 /* 24 * Remember what our command line arguments refer to 25 */ 26 server = argv[1]; 27 message = argv[2]; 28 29 /* 30 * Create client "handle" used for calling MESSAGEPROG on the 31 * server designated on the command line. We tell the rpc package 32 * to use the "tcp" protocol when contacting the server. 33 */ 34 cl = clnt_create(server, MESSAGEPROG, MESSAGEVERS, "tcp"); 35 if (cl == NULL) { 36 /* 37 * Couldn't establish connection with server. 38 * Print error message and die. 39 */ 40 clnt_pcreateerror(server); 41 exit(1); 42 } 43 44 /* 45 * Call the remote procedure "printmessage" on the server 46 */ 47 result = printmessage_1(&message, cl); 48 if (result == NULL) { 49 /* 50 * An error occurred while calling the server. 51 * Print error message and die. 52 */ 53 clnt_perror(cl, server); 54 exit(1); 55 } 56 57 /* 58 * Okay, we successfully called the remote procedure. 59 */ 60 if (*result == 0) { 61 /* 62 * Server was unable to print our message. 63 * Print error message and die. 64 */ 65 fprintf(stderr, "%s: sorry, %s couldn't print your message\n", 66 argv[0], server); 67 exit(1); 68 } 69 70 /* 71 * The message got printed on the server's console 72 */ 73 printf("Message delivered to %s!\n", server); 74 } 75