11905Swollman/* @(#)rprintmsg.c 2.1 88/08/11 4.0 RPCSRC */ 21905Swollman/* 31905Swollman * rprintmsg.c: remote version of "printmsg.c" 41905Swollman */ 51905Swollman#include <stdio.h> 61905Swollman#include <rpc/rpc.h> /* always need this */ 71905Swollman#include "msg.h" /* need this too: will be generated by rpcgen*/ 81905Swollman 91905Swollmanmain(argc, argv) 101905Swollman int argc; 111905Swollman char *argv[]; 121905Swollman{ 131905Swollman CLIENT *cl; 141905Swollman int *result; 151905Swollman char *server; 161905Swollman char *message; 171905Swollman 181905Swollman if (argc < 3) { 191905Swollman fprintf(stderr, "usage: %s host message\n", argv[0]); 201905Swollman exit(1); 211905Swollman } 221905Swollman 231905Swollman /* 241905Swollman * Remember what our command line arguments refer to 251905Swollman */ 261905Swollman server = argv[1]; 271905Swollman message = argv[2]; 281905Swollman 291905Swollman /* 301905Swollman * Create client "handle" used for calling MESSAGEPROG on the 311905Swollman * server designated on the command line. We tell the rpc package 321905Swollman * to use the "tcp" protocol when contacting the server. 331905Swollman */ 341905Swollman cl = clnt_create(server, MESSAGEPROG, MESSAGEVERS, "tcp"); 351905Swollman if (cl == NULL) { 361905Swollman /* 371905Swollman * Couldn't establish connection with server. 381905Swollman * Print error message and die. 391905Swollman */ 401905Swollman clnt_pcreateerror(server); 411905Swollman exit(1); 421905Swollman } 438875Srgrimes 441905Swollman /* 451905Swollman * Call the remote procedure "printmessage" on the server 461905Swollman */ 471905Swollman result = printmessage_1(&message, cl); 481905Swollman if (result == NULL) { 491905Swollman /* 508875Srgrimes * An error occurred while calling the server. 511905Swollman * Print error message and die. 521905Swollman */ 531905Swollman clnt_perror(cl, server); 541905Swollman exit(1); 551905Swollman } 561905Swollman 571905Swollman /* 581905Swollman * Okay, we successfully called the remote procedure. 591905Swollman */ 601905Swollman if (*result == 0) { 611905Swollman /* 628875Srgrimes * Server was unable to print our message. 631905Swollman * Print error message and die. 641905Swollman */ 658875Srgrimes fprintf(stderr, "%s: sorry, %s couldn't print your message\n", 668875Srgrimes argv[0], server); 671905Swollman exit(1); 688875Srgrimes } 691905Swollman 701905Swollman /* 711905Swollman * The message got printed on the server's console 721905Swollman */ 731905Swollman printf("Message delivered to %s!\n", server); 741905Swollman} 75