Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
01.05.2014
Размер:
1.3 Кб
Скачать
/* client program: use braodcast to print message on server's system console */
#include "msg2.h"
#include "RPC.h"

static int num_responses = 0;

/* client's braodcast call back function */
bool_t callme (caddr_t res_p, struct netbuf* addr, struct netconfig *nconf)
{
    num_responses++;

    if (res_p==0 || *((int*)res_p)!=0) {
       cerr << "clnt: call printmsg fails\n"; 
       return TRUE; /* stop broadcast */
    }
    cout << "clnt: call printmsg succeeds\n";
    return FALSE; /* get more responses */
}


/* client main function */
int main(int argc, char* argv[])
{
    int    res;
    if (argc<2) { 
       cerr << "usage: " << argv[0] << " msg\n";
       return 1;
    }

    /* client sends a broadcast request and waits for responses */
    int rc = RPC_cls::broadcast( MSGPROG, MSGVER, PRINTMSG, (resultproc_t)callme, 
               (xdrproc_t)xdr_string, (caddr_t)&argv[1], 
               (xdrproc_t)xdr_int, (caddr_t)&res);

    switch (rc) {
       case RPC_SUCCESS:     break;
       case RPC_TIMEDOUT:
          if (num_responses) break;
       default:
          cerr << "RPC broadcast failed\n";
          return 2;
    }
    cout << "RPC braodcast done. No. responses: " << num_responses << endl;
    return 0;
}

    

Соседние файлы в папке msg2