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
main(argc,argv)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