/* * versao remota do printmsg original */ #include #include "msg.h" // cabecalho criado pelo rpcgen int main(int argc, char **argv){ //agora e um ponteiro return_value *result = NULL; char *message; //variaveis adicionais para estabelecer conexao CLIENT *clnt; char *server; if(argc!= 3){ fprintf(stderr, "usage: %s \n", argv[0]); exit(1); } server = argv[1]; message = argv[2]; /* * Cria o "tratador" do cliente usado no servidor para tratar * a chamada remota de MESSAGEPROG. */ clnt = clnt_create(server, MESSAGEPROG, PRINTMESSAGEVERS, "tcp"); if(clnt == (CLIENT *)NULL){ /* * Se não conseguiu estabelecer conexao com * servidor imprime mensagem de erro. */ clnt_pcreateerror(server); exit(1); } /* * Chama o procedimento remoto printmessage * no servidor. */ result = printmessage_1(&message, clnt); if(result == (struct return_value *)NULL){ /* * Ocorreu um erro ao tentar chamar o * procedimento no servidor. */ clnt_perror(clnt, server); exit(1); }else{ /* * Se nao ocorreu erro mostra os valores retornados */ printf("result.param1=%d\nresult.param2=%s\nresult.param3=%f\n", result->param1, result->param2, result->param3); fflush(NULL); } if(result == 0){ /* * O servidor não conseguiu imprimir. */ fprintf(stderr, "%s: couldn't print your message\n", argv[0]); exit(1); } /* * Se ainda esta rodando neste ponto e * sinal de que tudo ocorreu bem. Sem * erros. */ printf("Message Deliverded!\n"); /* * Antes de finalizar efetuamos uma limpeza. */ clnt_destroy(clnt); exit(0); }