Remote Procedure Calls

Listing 4.

#include "avg.h"
#include <stdlib.h>
void
averageprog_1( char* host, int argc, char *argv[])
{
 CLIENT *clnt;
 double *result_1, *dp, f;
 char *endptr;
 int i;
 input_data average_1_arg;
 average_1_arg.input_data.input_data_val =
 (double*) malloc(MAXAVGSIZE*sizeof(double));
 dp = average_1_arg.input_data.input_data_val;
 average_1_arg.input_data.input_data_len =
 argc - 2;
 for (i=1;i<=(argc - 2);i++) {
 f = strtod(argv[i+1],&endptr);
 printf("value = %e\n",f);
 *dp = f;
 dp++;
 }
 clnt = clnt_create(host, AVERAGEPROG,
 AVERAGEVERS, "udp");
 if (clnt == NULL) {
 clnt_pcreateerror(host);
 exit(1);
 }
 result_1 = average_1(&average_1_arg, clnt);
 if (result_1 == NULL) {
 clnt_perror(clnt, "call failed:");
 }
 clnt_destroy( clnt );
 printf("average = %e\n",*result_1);
}
main( int argc, char* argv[] )
{
 char *host;
 if(argc < 3) {
 printf(
 "usage: %s server_host value ...\n",
 argv[0]);
 exit(1);
 }
 if(argc > MAXAVGSIZE + 2) {
 printf("Two many input values\n");
 exit(2);
 }
 host = argv[1];
 averageprog_1( host, argc, argv);
}

AltStyle によって変換されたページ (->オリジナル) /