Sei sulla pagina 1di 30

//RPC Programming (Remote Procedure Calls) 

//program for Echo server.

/*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 */

    result_1 = echo_1(&echo_1_arg, clnt);


    if (result_1 == (char **) NULL) {
        clnt_perror (clnt, "call failed");
  }
             printf("received %s\n",*result_1);
#ifndef    DEBUG
    clnt_destroy (clnt);
#endif     /* DEBUG */
}
int main (int argc, char *argv[])
{
Kashif Siddiq
04-09-5110
    char *host,str[20];                                                          
                                                   

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:

_xdr_argument = (xdrproc_t) xdr_wrapstring;


_xdr_result = (xdrproc_t) xdr_wrapstring;
Kashif Siddiq
04-09-5110
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);
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);
}

[it09110@ITD rpc1]$ cc echo_server.c echo_svc.c -o e


[it09110@ITD rpc1]$ ./e&
[1] 19925
[it09110@ITD rpc1]$ cc echo_client.c echo_clnt.c
[it09110@ITD rpc1]$ ./a.out 192.100.100.7
Enter a string
hello
Message recieved is hello
[it09110@ITD rpc1]$

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 */

    result_1 = chargen_1(&chargen_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];
    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;

    memset((char *)&clnt_res, 0, sizeof(clnt_res));


    if (clnt_call (clnt, chargen,
        (xdrproc_t) xdr_wrapstring, (caddr_t) argp,
        (xdrproc_t) xdr_wrapstring, (caddr_t) &clnt_res,
        TIMEOUT) != RPC_SUCCESS) {
Kashif Siddiq
04-09-5110
        return (NULL);
  }
    return (&clnt_res);
}

[it09110@ITD chargen]$ cc chargen_server.c chargen_svc.c -o c1


[it09110@ITD chargen]$ ./c1&
[4] 20757
[it09110@ITD chargen]$ cc chargen_client.c chargen_clnt.c
[it09110@ITD chargen]$ ./a.out 192.100.100.7
!"#$%&'()*+,-./012
[it09110@ITD chargen]$

                             
//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.
*/

#include <memory.h> /* for memset */


#include "dtme.h"

/* Default timeout can be changed using clnt_control() */


static struct timeval TIMEOUT = { 25, 0 };

char **
dtme_1(char **argp, CLIENT *clnt)
{
    static char *clnt_res;

    memset((char *)&clnt_res, 0, sizeof(clnt_res));


    if (clnt_call (clnt, dtme,
        (xdrproc_t) xdr_wrapstring, (caddr_t) argp,
        (xdrproc_t) xdr_wrapstring, (caddr_t) &clnt_res,
        TIMEOUT) != RPC_SUCCESS) {
        return (NULL);
  }
Kashif Siddiq
04-09-5110
    return (&clnt_res);
}

[it09110@ITD dtme]$ cc dtme_server.c dtme_svc.c -o d


[it09110@ITD dtme]$ ./d&
[5] 21154
[it09110@ITD dtme]$ cc dtme_client.c dtme_clnt.c
[it09110@ITD dtme]$ ./a.out 192.100.100.7
Mon Apr 11 12:22:01 2011
[it09110@ITD dtme]$

                                                                                
                                                                                                                            

//program for finding length of string.

/*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 */

    result_1 = strl_1(&strl_1_arg, clnt);


    if (result_1 == (int *) NULL) {
        clnt_perror (clnt, "call failed");
  }
         printf("length is %d\n",*result_1);
#ifndef    DEBUG
    clnt_destroy (clnt);
#endif     /* DEBUG */
}
int
main (int argc, char *argv[])
{
    char *host,str[20];
              if (argc < 2) {
        printf ("usage: %s server_host\n", argv[0]);
        exit (1);
  }
    host = argv[1];
printf("enter string\n");
scanf("%s",str);
    stlenprg_1 (host,str);
exit (0);
}

/*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]$

                                   

//program for reversing a  string.

/*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 */

    result_1 = echo_1(&echo_1_arg, clnt);


    if (result_1 == (char **) NULL) {
        clnt_perror (clnt, "call failed");
  }
printf("reverse %s\n",*result_1);
#ifndef    DEBUG
    clnt_destroy (clnt);
#endif     /* DEBUG */
}
int
main (int argc, char *argv[])
{
    char *host,str[20];

    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);
  }

    transp = svctcp_create(RPC_ANYSOCK, 0, 0);


    if (transp == NULL) {
        fprintf (stderr, "%s", "cannot create tcp service.");
        exit(1);
  }
    if (!svc_register(transp, revprg, revr, revprg_1, IPPROTO_TCP)) {
        fprintf (stderr, "%s", "unable to register (revprg, revr, tcp).");
        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"

/* 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 rev1]$ cc rev_server.c rev_svc.c -o s


[it09110@ITD rev1]$ ./s&
[2] 19418
[it09110@ITD rev1]$ cc rev_client.c rev_clnt.c
[it09114@ITD rev1]$ ./a.out 192.100.100.7
enter string
hello
reverse olleh
[it09110@ITD rev1]$

Kashif Siddiq
04-09-5110
                                                                                
                                  

//program for lower case to upper case.

/*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 */

    result_1 = echo_1(&echo_1_arg, clnt);


    if (result_1 == (char **) NULL) {
        clnt_perror (clnt, "call failed");
  }
          printf("upper case %s \n",*result_1);
#ifndef    DEBUG
    clnt_destroy (clnt);
#endif     /* DEBUG */
}
int
main (int argc, char *argv[])
{
    char *host,str[20];

    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 */

    result_1 = echo_1(&echo_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[20];
Kashif Siddiq
04-09-5110
    if (argc < 2) {
        printf ("usage: %s server_host\n", argv[0]);
        exit (1);
  }
    host = argv[1];
printf("enter file name\n");
scanf("%s",str);
    fileprg_1 (host,str);
exit (0);
}

/*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);
  }

    transp = svctcp_create(RPC_ANYSOCK, 0, 0);


    if (transp == NULL) {
        fprintf (stderr, "%s", "cannot create tcp service.");
        exit(1);
  }
    if (!svc_register(transp, fileprg, filever, fileprg_1, IPPROTO_TCP)) {
        fprintf (stderr, "%s", "unable to register (fileprg, filever, tcp).");
        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.
*/

#include <memory.h> /* for memset */


#include "file.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 file]$ cc file_server.c file_svc.c -o f


[it09110@ITD file]$ ./f&
[2] 20122
[it09110@ITD file]$ cc file_client.c file_clnt.c
[it09110@ITD file]$ ./a.out 192.100.100.7
enter file name
abc
wrklbfl
[it09110@ITD file]$

                                                                  

Kashif Siddiq
04-09-5110

Potrebbero piacerti anche