RPC Programming1
RPC Programming1
/*echo.x*/
program echoprg
{
version echover
{
string echo(string)=1;
}=1;
}=0x22000000;
/*echo_server*/
#include "echo.h"
char **echo_1_svc(char **argp, struct svc_req *rqstp)
{
static char * result,s[20];
strcpy(s,*argp);
result=s;
result=*argp;
return &result;
}
/*echo_client
#include "echo.h"
void echoprg_1(char *host,char *str)
{
CLIENT *clnt;
char * *result_1;
char * echo_1_arg=str;
#ifndef DEBUG
clnt = clnt_create (host, echoprg, echover, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
}
host = argv[1];
printf("enter string\n");
scanf("%s",str);
echoprg_1 (host,str);
exit (0);
}
/*echo_svc*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include "echo.h"
#include <stdio.h>
#include <stdlib.h>
#include <rpc/pmap_clnt.h>
#include <string.h>
#include <memory.h>
#include <sys/socket.h>
#include <netinet/in.h>
#ifndef SIG_PF
#define SIG_PF void(*)(int)
#endif
static void
echoprg_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
char *echo_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
char *(*local)(char *, struct svc_req *);
switch (rqstp->rq_proc)
{
case NULLPROC:
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
return;
case echo:
}
memset ((char *)&argument, 0, sizeof (argument));
if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument))
{
svcerr_decode (transp);
return;
}
result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result))
{
svcerr_systemerr (transp);
}
if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
fprintf (stderr, "%s", "unable to free arguments");
exit (1);
}
return;
}
int
main (int argc, char **argv)
{
register SVCXPRT *transp;
pmap_unset (echoprg, echover);
transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service.");
exit(1);
}
if (!svc_register(transp, echoprg, echover, echoprg_1, IPPROTO_UDP))
{
fprintf (stderr, "%s", "unable to register (echoprg, echover, udp).");
exit(1);
}
transp = svctcp_create(RPC_ANYSOCK, 0, 0);
if (transp == NULL)
{
fprintf (stderr, "%s", "cannot create tcp service.");
exit(1);
}
if (!svc_register(transp, echoprg, echover, echoprg_1, IPPROTO_TCP)) {
fprintf (stderr, "%s", "unable to register (echoprg, echover, tcp).");
exit(1);
}
Kashif Siddiq
04-09-5110
svc_run ();
fprintf (stderr, "%s", "svc_run returned");
exit (1);
/* NOTRECHED*/
/*echo_clnt/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include <memory.h> /* for memset */
#include "echo.h"
/* Default timeout can be changed using clnt_control() */
static struct timeval TIMEOUT = { 25, 0 };
char **
echo_1(char **argp, CLIENT *clnt)
{
static char *clnt_res;
memset((char *)&clnt_res, 0, sizeof(clnt_res));
if (clnt_call (clnt, echo,(xdrproc_t) xdr_wrapstring, (caddr_t) argp,(xdrproc_t)
xdr_wrapstring, (caddr_t) &clnt_res,TIMEOUT) != RPC_SUCCESS) {
return (NULL);
}
return (&clnt_res);
}
Kashif Siddiq
04-09-5110
//program for character generation.
/*chargen.x*/
program chargenprg
{
version chargenver
{
string chargen(string)=1;
}=1;
}=0x22200000;
/*chargen_server*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "chargen.h"
char **
chargen_1_svc(char **argp, struct svc_req *rqstp)
{
static char * result,s[2],buf[50];
int i,k=0;
for(i=1;i<=50;i++)
{
buf[k]=i;
k=k+1;
}
buf[k]='\0';
result=buf;
/*
* insert server code here
*/
return &result;
}
/*chargen_client/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "chargen.h"
void
Kashif Siddiq
04-09-5110
chargenprg_1(char *host,char *str)
{
CLIENT *clnt;
char * *result_1;
char * chargen_1_arg=str;
#ifndef DEBUG
clnt = clnt_create (host, chargenprg, chargenver, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
}
host = argv[1];
chargenprg_1 (host,str);
exit (0);
}
/*chargen_svc*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include "chargen.h"
#include <stdio.h>
#include <stdlib.h>
#include <rpc/pmap_clnt.h>
#include <string.h>
#include <memory.h>
Kashif Siddiq
04-09-5110
#include <sys/socket.h>
#include <netinet/in.h>
#ifndef SIG_PF
#define SIG_PF void(*)(int)
#endif
static void
chargenprg_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
char *chargen_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
char *(*local)(char *, struct svc_req *);
switch (rqstp->rq_proc) {
case NULLPROC:
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
return;
case chargen:
_xdr_argument = (xdrproc_t) xdr_wrapstring;
_xdr_result = (xdrproc_t) xdr_wrapstring;
local = (char *(*)(char *, struct svc_req *)) chargen_1_svc;
break;
default:
svcerr_noproc (transp);
return;
}
memset ((char *)&argument, 0, sizeof (argument));
if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
svcerr_decode (transp);
return;
}
result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result,
result)) {
svcerr_systemerr (transp);
}
if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument))
{
fprintf (stderr, "%s", "unable to free arguments");
exit (1);
}
return;
}
int
Kashif Siddiq
04-09-5110
main (int argc, char **argv)
{
register SVCXPRT *transp;
pmap_unset (chargenprg, chargenver);
transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service.");
exit(1);}
if (!svc_register(transp, chargenprg, chargenver, chargenprg_1,
IPPROTO_UDP)) {
fprintf (stderr, "%s", "unable to register (chargenprg, chargenver,
udp).");
exit(1);
}
transp = svctcp_create(RPC_ANYSOCK, 0, 0);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create tcp service.");
exit(1);
}
if (!svc_register(transp, chargenprg, chargenver, chargenprg_1, IPPROTO_TCP)) {
fprintf (stderr, "%s", "unable to register (chargenprg, chargenver,
tcp).");
exit(1);
}
svc_run ();
fprintf (stderr, "%s", "svc_run returned");
exit (1);
/* NOTREACHED */
}
/*chargen_clnt/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include <memory.h> /* for memset */
#include "chargen.h"
/* Default timeout can be changed using clnt_control() */
static struct timeval TIMEOUT = { 25, 0 };
char **
chargen_1(char **argp, CLIENT *clnt)
{
static char *clnt_res;
//program for Date and time.
/*dtme.x*/
program dtmeprg
{
version dtmever
{
string dtme(string)=1;
}=1;
}=0x22200000;
----------/*dtme_server*/------
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "dtme.h"
char **
dtme_1_svc(char **argp, struct svc_req *rqstp)
{
static char * result,s[2],str[30];
time_t t;
strcpy(s,*argp);
t=time(NULL);
strcpy(str,ctime(&t));
result=str;
/*
* insert server code here
*/
return &result;
}
---------------/*dtme_client*/--------
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
Kashif Siddiq
04-09-5110
#include "dtme.h"
void
dtmeprg_1(char *host,char *str)
{
CLIENT *clnt;
char * *result_1;
char * dtme_1_arg=str;
#ifndef DEBUG
clnt = clnt_create (host, dtmeprg, dtmever, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
result_1 = dtme_1(&dtme_1_arg, clnt);
if (result_1 == (char **) NULL) {
clnt_perror (clnt, "call failed");
}
printf("%s\n",*result_1);
#ifndef DEBUG
clnt_destroy (clnt);
#endif /* DEBUG */
}
int
main (int argc, char *argv[])
{
char *host,str[2];
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
}
host = argv[1];
dtmeprg_1 (host,str);
exit (0);
}
/*dtme_svc*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include "dtme.h"
#include <stdio.h>
#include <stdlib.h>
#include <rpc/pmap_clnt.h>
#include <string.h>
#include <memory.h>
Kashif Siddiq
04-09-5110
#include <sys/socket.h>
#include <netinet/in.h>
#ifndef SIG_PF
#define SIG_PF void(*)(int)
#endif
static void
dtmeprg_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
char *dtme_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
char *(*local)(char *, struct svc_req *);
switch (rqstp->rq_proc) {
case NULLPROC:
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
return;
case dtme:
_xdr_argument = (xdrproc_t) xdr_wrapstring;
_xdr_result = (xdrproc_t) xdr_wrapstring;
local = (char *(*)(char *, struct svc_req *)) dtme_1_svc;
break;
default:
svcerr_noproc (transp);
return;}
memset ((char *)&argument, 0, sizeof (argument));
if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
svcerr_decode (transp);
return;
}
result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result,
result)) {
svcerr_systemerr (transp);
}
if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument))
{
fprintf (stderr, "%s", "unable to free arguments");
exit (1);
}
return;
}
int
main (int argc, char **argv)
{
Kashif Siddiq
04-09-5110
register SVCXPRT *transp;
pmap_unset (dtmeprg, dtmever);
transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service.");
exit(1);
}
if (!svc_register(transp, dtmeprg, dtmever, dtmeprg_1, IPPROTO_UDP)) {
fprintf (stderr, "%s", "unable to register (dtmeprg, dtmever, udp).");
exit(1);
}
transp = svctcp_create(RPC_ANYSOCK, 0, 0);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create tcp service.");
exit(1);
}
if (!svc_register(transp, dtmeprg, dtmever, dtmeprg_1, IPPROTO_TCP)) {
fprintf (stderr, "%s", "unable to register (dtmeprg, dtmever, tcp).");
exit(1);
}
svc_run ();
fprintf (stderr, "%s", "svc_run returned");
exit (1);
/* NOTREACHED */
}
/*dtme_clnt*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
char **
dtme_1(char **argp, CLIENT *clnt)
{
static char *clnt_res;
/*stlen.x*/
program stlenprg
{
version stlenver
{
int strl(string)=1;
}=1;
}=0x22200000;
--------------/*stlen_server*/--------
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "stlen.h"
int *
strl_1_svc(char **argp, struct svc_req *rqstp)
{
static int result=0,l=0;
int i;
static char s[20];
strcpy(s,*argp);
// printf("%s\n",s);
for(i=0;s[i]!='\0';i++)
{
// printf("%c\n",s[i]);
l=l+1;
}
result=l;
return &result;
}
Kashif Siddiq
04-09-5110
/*stlen_client*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "stlen.h"
void
stlenprg_1(char *host,char *str)
{
CLIENT *clnt;
int *result_1;
char * strl_1_arg=str;
#ifndef DEBUG
clnt = clnt_create (host, stlenprg, stlenver, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
/*stlen_svc*/
/*
* Please do not edit this file.
Kashif Siddiq
04-09-5110
* It was generated using rpcgen.
*/
#include "stlen.h"
#include <stdio.h>
#include <stdlib.h>
#include <rpc/pmap_clnt.h>
#include <string.h>
#include <memory.h>
#include <sys/socket.h>
#include <netinet/in.h>
#ifndef SIG_PF
#define SIG_PF void(*)(int)
#endif
static void
stlenprg_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
char *strl_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
char *(*local)(char *, struct svc_req *);
switch (rqstp->rq_proc) {
case NULLPROC:
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
return;
case strl:
_xdr_argument = (xdrproc_t) xdr_wrapstring;
_xdr_result = (xdrproc_t) xdr_int;
local = (char *(*)(char *, struct svc_req *)) strl_1_svc;
break;
default:
svcerr_noproc (transp);
return; }
memset ((char *)&argument, 0, sizeof (argument));
if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
svcerr_decode (transp);
return;
}
result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result,
result)) {
svcerr_systemerr (transp);
}
if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument))
{
fprintf (stderr, "%s", "unable to free arguments");
exit (1);
Kashif Siddiq
04-09-5110
}
return;}
int
main (int argc, char **argv)
{
register SVCXPRT *transp;
pmap_unset (stlenprg, stlenver);
transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service.");
exit(1);}
if (!svc_register(transp, stlenprg, stlenver, stlenprg_1, IPPROTO_UDP)) {
fprintf(stderr, "%s", "unable to register (stlenprg, stlenver, udp).");
exit(1);
}
transp = svctcp_create(RPC_ANYSOCK, 0, 0);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create tcp service.");
exit(1);
}
if (!svc_register(transp, stlenprg, stlenver, stlenprg_1, IPPROTO_TCP)) {
fprintf (stderr, "%s", "unable to register (stlenprg, stlenver, tcp).");
exit(1);
}
svc_run ();
fprintf (stderr, "%s", "svc_run returned");
exit (1);
/* NOTREACHED */
}
stlen_clnt*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include <memory.h> /* for memset */
#include "stlen.h"
/* Default timeout can be changed using clnt_control() */
static struct timeval TIMEOUT = { 25, 0 };
int *
strl_1(char **argp, CLIENT *clnt)
{
static int clnt_res;
memset((char *)&clnt_res, 0, sizeof(clnt_res));
if (clnt_call (clnt, strl,
(xdrproc_t) xdr_wrapstring, (caddr_t) argp,
(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
TIMEOUT) != RPC_SUCCESS) {
return (NULL);
Kashif Siddiq
04-09-5110
}
return (&clnt_res);
}
[it09110@ITD stlen]$ cc stlen_server.c stlen_svc.c -o t
[it09110@ITD stlen]$ ./t&
[7] 19801
[it09110@ITD stlen]$ cc stlen_client.c stlen_clnt.c
[it09110@ITD stlen]$ ./a.out 192.100.100.7
enter string
hello
length is 5
[it09110@ITD stlen]$
/*rev.x*/
program revprg
{
version revr
{
string echo(string)=1;
}=1;
}=0x22220000;
/*rev_server*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "rev.h"
#include<string.h>
char **
echo_1_svc(char **argp, struct svc_req *rqstp)
{
static char * result,s[20],s1[20];
int l,i=0,k;
strcpy(s,*argp);
l=strlen(s);
k=l-1;
for(i=0;s[i]!='\0';i++)
{
s1[i]=s[k];
k--;
}
s1[i]='\0';
/*
Kashif Siddiq
04-09-5110
* insert server code here
*/
result=s1;
return &result;
}
/*rev_client*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "rev.h"
void
revprg_1(char *host, char *str)
{
CLIENT *clnt;
char * *result_1;
char * echo_1_arg=str;
#ifndef DEBUG
clnt = clnt_create (host, revprg, revr, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
}
host = argv[1];
printf("enter string\n");
scanf("%s",str);
Kashif Siddiq
04-09-5110
revprg_1 (host,str);
exit (0);
}
/*rev_svc*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include "rev.h"
#include <stdio.h>
#include <stdlib.h>
#include <rpc/pmap_clnt.h>
#include <string.h>
#include <memory.h>
#include <sys/socket.h>
#include <netinet/in.h>
#ifndef SIG_PF
#define SIG_PF void(*)(int)
#endif
static void
revprg_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
char *echo_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
char *(*local)(char *, struct svc_req *);
switch (rqstp->rq_proc) {
case NULLPROC:
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
return;
case echo:
_xdr_argument = (xdrproc_t) xdr_wrapstring;
_xdr_result = (xdrproc_t) xdr_wrapstring;
local = (char *(*)(char *, struct svc_req *)) echo_1_svc;
break;
default:
svcerr_noproc (transp);
return;
}
memset ((char *)&argument, 0, sizeof (argument));
if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
svcerr_decode (transp);
Kashif Siddiq
04-09-5110
return;
}
result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result,
result)) {
svcerr_systemerr (transp);
}
if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument))
{
fprintf (stderr, "%s", "unable to free arguments");
exit (1);
}
return;
}
int
main (int argc, char **argv)
{
register SVCXPRT *transp;
pmap_unset (revprg, revr);
transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service.");
exit(1);
}
if (!svc_register(transp, revprg, revr, revprg_1, IPPROTO_UDP)) {
fprintf (stderr, "%s", "unable to register (revprg, revr, udp).");
exit(1);
}
svc_run ();
fprintf (stderr, "%s", "svc_run returned");
exit (1);
/* NOTREACHED */
}
/*rev_clnt*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
Kashif Siddiq
04-09-5110
*/
#include <memory.h> /* for memset */
#include "rev.h"
char **
echo_1(char **argp, CLIENT *clnt)
{
static char *clnt_res;
return (&clnt_res);
}
Kashif Siddiq
04-09-5110
/*upper.x*/
program uppercase
{
version uprver
{
string echo(string)=1;
}=1;
}=0x22200000;
/*upper_server*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "upper.h"
char **
echo_1_svc(char **argp, struct svc_req *rqstp)
{
static char * result;
char *s;
s=*argp;
int k=0;
for(k=0;s[k]!='\0';k++)
{
Kashif Siddiq
04-09-5110
if((s[k]>=97)&(s[k]<=122))
s[k]=s[k]-32;
}
/*
* insert server code here
*/
result=s;
return &result;
}
/*upper_client*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "upper.h"
void
uppercase_1(char *host,char *str)
{
CLIENT *clnt;
char * *result_1;
char * echo_1_arg=str;
#ifndef DEBUG
clnt = clnt_create (host, uppercase, uprver, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
Kashif Siddiq
04-09-5110
}
host = argv[1];
printf("enter string\n");
scanf("%s",str);
uppercase_1 (host,str);
exit (0);
}
/*upper_svc*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include "upper.h"
#include <stdio.h>
#include <stdlib.h>
#include <rpc/pmap_clnt.h>
#include <string.h>
#include <memory.h>
#include <sys/socket.h>
#include <netinet/in.h>
#ifndef SIG_PF
#define SIG_PF void(*)(int)
#endif
static void
uppercase_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
char *echo_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
char *(*local)(char *, struct svc_req *);
switch (rqstp->rq_proc) {
case NULLPROC:
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
return;
case echo:
_xdr_argument = (xdrproc_t) xdr_wrapstring;
_xdr_result = (xdrproc_t) xdr_wrapstring;
local = (char *(*)(char *, struct svc_req *)) echo_1_svc;
break;
default:
svcerr_noproc (transp);
return;
}
Kashif Siddiq
04-09-5110
memset ((char *)&argument, 0, sizeof (argument));
if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
svcerr_decode (transp);
return;
}
result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result,
result)) {
svcerr_systemerr (transp);
}
if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument))
{
fprintf (stderr, "%s", "unable to free arguments");
exit (1);
}
return;
}
int
main (int argc, char **argv)
{
register SVCXPRT *transp;
pmap_unset (uppercase, uprver);
transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service.");
exit(1);
}
if (!svc_register(transp, uppercase, uprver, uppercase_1,
IPPROTO_UDP)) {
fprintf (stderr, "%s", "unable to register (uppercase, uprver, udp).");
exit(1);
}
transp = svctcp_create(RPC_ANYSOCK, 0, 0);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create tcp service.");
exit(1);
}
if (!svc_register(transp, uppercase, uprver, uppercase_1, IPPROTO_TCP)) {
fprintf (stderr, "%s", "unable to register (uppercase, uprver, tcp).");
exit(1);
}
svc_run ();
fprintf (stderr, "%s", "svc_run returned");
exit (1);
/* NOTREACHED */
}
/*upper_clnt*/
/*
* Please do not edit this file.
Kashif Siddiq
04-09-5110
* It was generated using rpcgen.
*/
#include <memory.h> /* for memset */
#include "upper.h"
/* Default timeout can be changed using clnt_control() */
static struct timeval TIMEOUT = { 25, 0 };
char **
echo_1(char **argp, CLIENT *clnt)
{
static char *clnt_res;
memset((char *)&clnt_res, 0, sizeof(clnt_res));
if (clnt_call (clnt, echo,
(xdrproc_t) xdr_wrapstring, (caddr_t) argp,
(xdrproc_t) xdr_wrapstring, (caddr_t) &clnt_res,
TIMEOUT) != RPC_SUCCESS) {
return (NULL);
}
return (&clnt_res);}
[it09110@ITD upper]$ cc upper_server.c upper_svc.c -o l
[it09110@ITD upper]$ ./l&
[1] 19289
[it09110@ITD upper]$ cc upper_client.c upper_clnt.c
[it09110@ITD upper]$ ./a.out 192.100.100.7
enter string
hello
upper case HELLO
[it09110@ITD upper]
//program for remote file access.
/*file.x*/
program fileprg
{
version filever
{
string echo(string)=1;
}=1;
}=0x22200000;
/*file_server*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "file.h"
#include<fcntl.h>
char **
echo_1_svc(char **argp, struct svc_req *rqstp)
{
static char * result,s[20],s1[100];
char c;
Kashif Siddiq
04-09-5110
int i=0;
strcpy(s,*argp);
int fd=open(s,O_RDONLY);
while(read(fd,&c,1)!=0)
{
s1[i]=c;
i++;
}
s1[i]='\0';
result=s1;
return &result;
}
/*file_client*/
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "file.h"
void
fileprg_1(char *host,char *str)
{
CLIENT *clnt;
char * *result_1;
char * echo_1_arg=str;
#ifndef DEBUG
clnt = clnt_create (host, fileprg, filever, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
/*file_svc*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include "file.h"
#include <stdio.h>
#include <stdlib.h>
#include <rpc/pmap_clnt.h>
#include <string.h>
#include <memory.h>
#include <sys/socket.h>
#include <netinet/in.h>
#ifndef SIG_PF
#define SIG_PF void(*)(int)
#endif
static void
fileprg_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
char *echo_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
char *(*local)(char *, struct svc_req *);
switch (rqstp->rq_proc) {
case NULLPROC:
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
return;
case echo:
_xdr_argument = (xdrproc_t) xdr_wrapstring;
_xdr_result = (xdrproc_t) xdr_wrapstring;
local = (char *(*)(char *, struct svc_req *)) echo_1_svc;
break;
Kashif Siddiq
04-09-5110
default:
svcerr_noproc (transp);
return;
}
memset ((char *)&argument, 0, sizeof (argument));
if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
svcerr_decode (transp);
return;
}
result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result,
result)) {
svcerr_systemerr (transp);
}
if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument))
{
fprintf (stderr, "%s", "unable to free arguments");
exit (1);
}
return;
}
int
main (int argc, char **argv)
{
register SVCXPRT *transp;
pmap_unset (fileprg, filever);
transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service.");
exit(1);
}
if (!svc_register(transp, fileprg, filever, fileprg_1, IPPROTO_UDP)) {
fprintf (stderr, "%s", "unable to register (fileprg, filever, udp).");
exit(1);
}
svc_run ();
fprintf (stderr, "%s", "svc_run returned");
Kashif Siddiq
04-09-5110
exit (1);
/* NOTREACHED */
}
/*file_clnt*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
char **
echo_1(char **argp, CLIENT *clnt)
{
static char *clnt_res;
memset((char *)&clnt_res, 0, sizeof(clnt_res));
if (clnt_call (clnt, echo,
(xdrproc_t) xdr_wrapstring, (caddr_t) argp,
(xdrproc_t) xdr_wrapstring, (caddr_t) &clnt_res,
TIMEOUT) != RPC_SUCCESS) {
return (NULL);
}
return (&clnt_res);
}
Kashif Siddiq
04-09-5110