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