7th ex:-
PROGRAM:
SIMP.X
#define VERSION_NUMBER 1
#define foo 127
struct operands
{
int x;
int y;
};
program SIMP_PROG
{
version SIMP_VERSION
{
int ADD(operands)=1;
int SUB(operands)=2;
}
=VERSION_NUMBER;
}=55555555;
SIMSER.C
#include<stdio.h>
#include "simp.h"
int *add_1_svc(operands *argp,struct svc_req *rqstp)
{
static int result;
printf("Got Request:adding %d,%d\n",argp->x,argp->y);
result=argp->x+argp->y;
return(&result);
}
int *sub_1_svc(operands *argp,struct svc_req *rqstp)
{
static int result;
printf("Got Request:subtracting %d,%d\n",argp->x,argp->y);
result=argp->x-argp->y;
return(&result);
}
SIMCLI.C
#include<stdio.h>
#include<stdlib.h>
#include "simp.h"
int add(CLIENT *clnt,int x,int y)
{
operands ops;
int *result;
ops.x=x;
ops.y=y;
result=add_1(&ops,clnt);
if(result==NULL)
{
fprintf(stderr,"Trouble calling remote procedure\n");
exit(0);
}
return(*result);
}
int sub(CLIENT *clnt,int x,int y)
{
operands ops;
int *result;
ops.x=x;
ops.y=y;
result=sub_1(&ops,clnt);
if(result==NULL)
{
fprintf(stderr,"Trouble calling remote procedure\n");
exit(0);
}
return(*result);
}
int main(int argc,char *argv[])
{
CLIENT *clnt;
int x,y;
if(argc!=4)
{
fprintf(stderr,"Usage:%s hostname num 1 num\n",argv[0]);
exit(0);
}
clnt=clnt_create(argv[1],SIMP_PROG,SIMP_VERSION,"udp");
if(clnt==(CLIENT *)NULL)
{
clnt_pcreateerror(argv[1]);
exit(1);
}
x=atoi(argv[2]);
y=atoi(argv[3]);
printf("%d+%d=%d\n",x,y,add(clnt,x,y));
printf("%d-%d=%d\n",x,y,sub(clnt,x,y));
return(0);
}
OUTPUT:
SIMP.X
[it86063@vecit ~]$ rpcgen simp.x
SIMSER.C
[it86063@vecit ~]$ cc -o server simser.c simp_svc.c simp_xdr.c
[it86063@vecit ~]$ ./server
Got Request:adding 3,4
Got Request:subtracting 3,4
SIMCLI.C:
[it86063@vecit ~]$ cc -o client simcli.c simp_clnt.c simp_xdr.c
[it86063@vecit ~]$ ./client vecit 3 4
3+4=7
3-4=-1
No comments:
Post a Comment