Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 37

1.IMPLEMENTATION OF CONNECTION ORIENTED ITERATIVE COMMUNICATION //SERVER #include<stdio.h> #include<sys/socket.h> #include<netinet/in.

h> int main() { int sockfd,newsockfd,clilen; char a[50]; struct sockaddr_in serv_addr,cli_addr; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); listen(sockfd,1); clilen=sizeof(cli_addr); newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&clilen); if(newsockfd<0) printf("Connection not established\n"); else { 1

printf("Connection established\n"); read(newsockfd,a,50); printf("Server received message %s \n",a); write(newsockfd,"server msg received",50); close(newsockfd); } } OUTPUT: [cse31a@CSELAB 3010]$ cc itese.c o its [cse31a@CSELAB 3010]$ ./its Connection established Server received message Gouthami

//CLIENT #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> int main() { int sockfd,client; char a[50],a1[50]; struct sockaddr_in serv_addr; 2

sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); client=connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); if(client<0) printf("Connection not established\n"); else { printf("Enter a msg\n"); scanf("%s",a); write(sockfd,a,50); read(sockfd,a1,50); printf("Client received message: %s\n",a1); close(sockfd); } } OUTPUT: [cse31a@CSELAB 3010]$ cc itecl.c o itcl [cse31a@CSELAB 3010]$ ./itcl Enter a msg Gouthami Client received message: server msg received

2. IMPLEMENTATION OF CONNECTIONLESS ITERATIVE COMMUNICATION //SERVER #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> int main() { int sockfd,clilen; char a[50]; struct sockaddr_in serv_addr,cli_addr;

sockfd=socket(AF_INET,SOCK_DGRAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010);

bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); clilen=sizeof(cli_addr); recvfrom(sockfd,a,40,0,(struct sockaddr*)&cli_addr,&clilen); printf("Server received msg %s\n",a); sendto(sockfd,"server msg received",20,0,(struct sockaddr*)&cli_addr,clilen); close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc ids2.c o a 4

[cse31a@CSELAB 3010]$ ./a Server received msg Gouthami

//CLIENT #include<stdio.h> #include<netinet/in.h> #include<sys/socket.h> int main() { int client,sockfd; struct sockaddr_in cli_addr,serv_addr; char a[50],a1[50]; sockfd=socket(AF_INET,SOCK_DGRAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); cli_addr.sin_family=AF_INET; cli_addr.sin_addr.s_addr=htonl(INADDR_ANY); cli_addr.sin_port=htons(0); bind(sockfd,(struct sockaddr*)&cli_addr,sizeof(cli_addr)); printf("Enter the message\n"); scanf("%s",a); client=sizeof(serv_addr); 5

printf("Client %s\n",a); sendto(sockfd,a,30,0,(struct sockaddr*)&serv_addr,client); recvfrom(sockfd,a1,20,0,(struct sockaddr*)&serv_addr,&client); printf("Server received message %s\n",a1); close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc idc2.c o b [cse31a@CSELAB 3010]$ ./b Enter the message Gouthami Client Gouthami Server received message server msg received

3. IMPLEMENTATION OF CONNECTION ORIENTED CONCURRENT COMMUNICATION //SERVER #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #include<sys/types.h> #include<stdlib.h> #include<sys/wait.h> int main() { int i,sockfd,newsockfd,clilen,pid; struct sockaddr_in serv_addr,cli_addr; char g[50]; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); listen(sockfd,5); while(1) { clilen=sizeof(cli_addr); if((newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&clilen))==-1) { printf("Error in accept\n"); } else 7

{ pid=fork(); if(pid==0) { close(sockfd); read(newsockfd,g,50); printf("server received %s\n",g); write(newsockfd,"server received msg",50); close(newsockfd); exit(0); } } } } OUTPUT: [cse31a@CSELAB 3010]$ cc connserver3.c o a [cse31a@CSELAB 3010]$ ./a server received gouthami server received cse

//CLIENT #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #include<sys/types.h> #include<sys/wait.h> int main() { int sockfd; struct sockaddr_in serv_addr; char a[50],a1[50]; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0) printf("Error creating connection\n"); printf("enter the message\n"); scanf("%s",a); write(sockfd,a,50); read(sockfd,a1,50); printf("client received message %s\n",a1); close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ conncli3.c o b [cse31a@CSELAB 3010]$ ./b enter the message 9

gouthami client received message server received msg [cse31a@CSELAB 3010]$ conncli3.c o c [cse31a@CSELAB 3010]$ ./c enter the message cse client received message server received msg

10

4. IMPLEMENTATION OF CONNECTIONLESS CONCURRENT COMMUNICATION

//SERVER #include<stdio.h> #include<sys/socket.h> #include<sys/types.h> #include<netinet/in.h> int main() { pid_t child; int sockfd,clilen; struct sockaddr_in serv_addr,cli_addr; char msg[80]; sockfd=socket(AF_INET,SOCK_DGRAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); child=fork(); if(child==0) { bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); listen(sockfd,5); clilen=sizeof(cli_addr); recvfrom(sockfd,msg,80,0,(struct sockaddr*)&cli_addr,&clilen); 11

printf("server received msg %s",msg); sendto(sockfd,"server got msg",20,0,(struct sockaddr*)&cli_addr,clilen); } else if(child<0) { printf("child not created"); } close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc conose.c o m [cse31a@CSELAB 3010]$ ./m server received msg all the best

//CLIENT #include<stdio.h> #include<sys/types.h> #include<netinet/in.h> #include<string.h> #include<sys/socket.h> int main() { int servlen,sockfd,n; struct sockaddr_in cli_addr,serv_addr; char msg1[50],msg[50]; sockfd=socket(AF_INET,SOCK_DGRAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); 12

serv_addr.sin_port=htons(3010); cli_addr.sin_family=AF_INET; cli_addr.sin_addr.s_addr=htonl(INADDR_ANY); cli_addr.sin_port=htons(0); bind(sockfd,(struct sockaddr*)&cli_addr,sizeof(cli_addr)); printf("enter a msg\n"); gets(msg); sendto(sockfd,msg,50,0,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); servlen=sizeof(serv_addr); n=recvfrom(sockfd,msg,50,0,(struct sockaddr*)&serv_addr,&servlen); if(n<0) { perror("recv error"); exit(1); } else { printf("\n client received msg %s",msg); } close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc conocl.c o cl [cse31a@CSELAB 3010]$ ./cl enter a msg all the best client received msg server got msg

13

5. IMPLEMENTATION OF SOCKNAME AND PEERNAME OF SERVER AND CLIENT //SERVER #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> int main() { int sockfd,newsockfd,clilen; struct sockaddr_in serv_addr,cli_addr; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); clilen=sizeof(serv_addr); getsockname(sockfd,(struct sockaddr*)&serv_addr,&clilen); printf("servr local addr is %s\n",inet_ntoa(serv_addr.sin_addr.s_addr)); listen(sockfd,1); clilen=sizeof(cli_addr); newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&clilen); if(newsockfd<0) printf("Connection not established\n"); else { getpeername(newsockfd,(struct sockaddr*)&cli_addr,&clilen); printf("peer name is %s",inet_ntoa(cli_addr.sin_addr.s_addr)); close(newsockfd); } 14

} OUTPUT: [cse31a@CSELAB 3010]$ cc gs.c o a [cse31a@CSELAB 3010]$ ./a servr local addr is 192.168.220.10 peer name is 192.168.220.10

//CLIENT #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> int main() { int sockfd,client,i; struct sockaddr_in serv_addr,cli_addr; char a[50],a1[50]; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); client=sizeof(cli_addr); 15

getsockname(sockfd,(struct sockaddr*)&cli_addr,&client); printf("server local addr %s\n",inet_ntoa(cli_addr.sin_addr.s_addr)); connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); client=sizeof(serv_addr); getpeername(sockfd,(struct sockaddr*)&serv_addr,&client); printf("peer address %s\n",inet_ntoa(serv_addr.sin_addr.s_addr)); close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc gc.c o b [cse31a@CSELAB 3010]$ ./b server local addr 0.0.0.0 peer address 192.168.220.10

16

6. IMPLEMENTATION OF USERDEFINED CONNECTION ORIENTED ITERATIVE TIME SERVER //SERVER #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> main() { int sockfd,newsockfd,client; char a[50],a1[50]; time_t t; struct sockaddr_in serv_addr,cli_addr; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); listen(sockfd,1); client=sizeof(cli_addr); newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&client); if(newsockfd <0) printf("connection not established \n"); else { printf("connection established \n"); read(newsockfd,a,40); time(&t); sprintf(a1,"server recevd msg %s",ctime(&t)); 17

printf("server received message %s \n",a); write(newsockfd,a1,50); close(newsockfd); } } OUTPUT: [cse31a@CSELAB 3010]$ cc its6.c -o a [cse31a@CSELAB 3010]$ ./a connection established server received message gouthami

//CLIENT #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> main() { int sockfd,newsockfd,client; char a[50],a1[50]; struct sockaddr_in serv_addr; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); client=connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); if(client<0) printf("connection not established \n"); 18

else { printf("enter the message \n"); scanf("%s",a); write(sockfd,a,30); read(sockfd,a1,60); printf("client received message %s \n",a1); close(newsockfd); } } OUTPUT: [cse31a@CSELAB 3010]$ cc it6.c -o b [cse31a@CSELAB 3010]$ ./b enter the message gouthami client received message server recevd msg Wed Oct 14 08:48:02 2009

19

7.IMPLEMENTATION OF TIME SERVER USING PREDEFINED PORT #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> main() { int sockfd,newsockfd,client; char a[50],a1[50]; struct sockaddr_in serv_addr; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(13); client=connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); if(client<0) printf("connection not established \n"); else { printf("enter the message \n"); scanf("%s",a); write(sockfd,a,30); read(sockfd,a1,60); printf("%s is %s \n",a,a1); close(newsockfd); } } OUTPUT: [cse31a@CSELAB 3010]$ cc timclipre.c o time 20

[cse31a@CSELAB 3010]$ ./time enter the message time time is Mon Nov 14 18:02:32 2011

21

8.IMPLEMENTATION OF ADVANCED SOCKET OPTIONS #include<stdio.h> #include<sys/socket.h> #include<sys/types.h> #include<netinet/tcp.h> #include<netinet/in.h> main() { int sockfd,client,sndb,maxbuf; sockfd=socket(AF_INET,SOCK_STREAM,0); client=sizeof(maxbuf); getsockopt(sockfd,IPPROTO_TCP,TCP_MAXSEG,(char *)&maxbuf,&client); printf("tcp maxseg %d \n",maxbuf); sndb=1234; setsockopt(sockfd,SOL_SOCKET,SO_SNDBUF,(char *)&sndb,client); client=sizeof(sndb); getsockopt(sockfd,SOL_SOCKET,SO_SNDBUF,(char *)&sndb,&client); printf("send buff size %d \n",sndb); } OUTPUT: [cse31a@CSELAB 3010]$ cc ads.c -o a [cse31a@CSELAB 3010]$ ./a tcp maxseg 536 send buff size 2468

22

9. ILLUSTRATION OF ADVANCED SYSTEM CALLS readv AND writev //SERVER #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #include<sys/uio.h> #include<sys/types.h> int main() { int sockfd,newsockfd,clilen; struct sockaddr_in serv_addr,cli_addr; struct iovec iov[2]; char b[50],b1[50]; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); listen(sockfd,1); clilen=sizeof(cli_addr); newsockfd=accept(sockfd,(struct sockaddr *)&cli_addr,&clilen); if(newsockfd<0) { perror("connection failed\n"); } iov[0].iov_base=b; iov[0].iov_len=50; iov[1].iov_base=b1; iov[1].iov_len=50; 23

readv(newsockfd,&iov[0],2); printf("server recvd mssg %s\n %s\n",b,b1); writev(newsockfd,&iov[0],2); close(newsockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc advserv.c o s [cse31a@CSELAB 3010]$ ./s server recvd mssg //CLIENT #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #include<sys/types.h> #include<sys/uio.h> #include<string.h> int main() { int sockfd; char a[50],a1[50],b[50],b1[50]; struct sockaddr_in serv_addr; struct iovec iov[2]; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); printf("enter 1st mssg\n"); gets(a); 24

printf("enter 2nd mssg\n"); gets(a1); iov[0].iov_base=a; iov[0].iov_len=50; iov[1].iov_base=a1; iov[1].iov_len=50; writev(sockfd,&iov[0],2); iov[0].iov_base=b; iov[0].iov_len=50; iov[1].iov_base=b1; iov[1].iov_len=50; readv(sockfd,&iov[0],2); printf("\n client recvd mssg %s %s",b,b1); close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc advcli.c o c [cse31a@CSELAB 3010]$ ./c enter 1st mssg good luck enter 2nd mssg all the best client recvd mssg good luck all the best

25

10.IMPLEMENTATION OF ASYNCHRONOUS I/O

#include<stdio.h> #include<signal.h> #include<fcntl.h> #define BUFSIZE 1024 int sigflag; main() { int n; char buff[100]; int sigio_fun(); signal(SIGIO,(void *)sigio_fun); fcntl(0,F_SETOWN,getpid()); fcntl(0,F_SETFL,FASYNC); for(;;) { sigblock(sigmask(SIGIO)); while(sigflag==0) sigpause(0); n=read(0,buff,BUFSIZE); if(n>0) { if(write(1,buff,n)!=n) 26

printf("write error \n") } else if(n<0) printf("read error \n"); else if(n==0) exit(0);

sigflag=0; sigsetmask(0); } } int sigio_fun() { sigflag=1; } OUTPUT: [cse31a@CSELAB 3010]$ cc asyncio.c [cse31a@CSELAB 3010]$ ./a.out gouthami gouthami

27

11.IMPLEMENTATION OF select SYSTEM CALL //SERVER #include<netinet/in.h> #include<stdio.h> #include<sys/socket.h> #include<sys/types.h> #define MAX_MSG 100 void errexit(char *str) { puts(str); exit(0); } int main() { int sockfd,newsockfd,fd,clilen; struct sockaddr_in serv_addr; fd_set readfds,testfd; int stat,n; char mesg[MAX_MSG]; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); listen(sockfd,5); FD_ZERO(&readfds); FD_SET(sockfd,&readfds); 28

printf("server waiting for new connection \n"); while(1) { testfd=readfds; stat=select(FD_SETSIZE,&testfd,(fd_set*)0,(fd_set*)0,(struct timeval*)0); for(fd=0;fd<FD_SETSIZE;fd++) { if(FD_ISSET(fd,&testfd)) { if(fd==sockfd) { newsockfd=accept(fd,(struct sockaddr*)0,NULL); FD_SET(newsockfd,&readfds); printf("adding client fd %d to read fdset \n",newsockfd); } else { n=recv(fd,mesg,MAX_MSG,0); if(n<0) errexit("recv error "); else if(n==0) { close(fd); FD_CLR(fd,&readfds); printf("removing client fd %d from read fd \n",fd); } else { if((send(fd,mesg,n,0))!=n) 29

errexit("send error "); } } } } } } OUTPUT: [cse31a@CSELAB 3010]$ cc selectserver.c -o a [cse31a@CSELAB 3010]$ ./a server waiting for new connection adding client fd 4 to read fdset adding client fd 5 to read fdset removing client fd 4 from read fd removing client fd 5 from read fd

//CLIENT #include<sys/socket.h> #include<netinet/in.h> #include<stdio.h> main() { int sockfd; 30

struct sockaddr_in serv_addr; char a[50],a1[50]; sockfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("192.168.220.10"); serv_addr.sin_port=htons(3010); connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); printf("\n enter the message \n"); scanf("%s",a); write(sockfd,a,26); read(sockfd,a1,26); printf("\n client received message %s \n",a1); close(sockfd); } OUTPUT: [cse31a@CSELAB 3010]$ cc selectclient.c -o c [cse31a@CSELAB 3010]$ ./c enter the message gouthami client received message gouthami [cse31a@CSELAB 3010]$ cc selectclient.c -o b [cse31a@CSELAB 3010]$ ./b enter the message cse client received message cse

31

12.IMPLEMENTATION OF REMOTE PROCEDURE CALL SIMPLE INTEREST

si.x file
struct record { int p; int n; int r; }; program SI_PROG { version SI_VERS { long si(record)=1; }=1; }=0x31234567;

si_proc.c //server routine


#include"si.h" #include<rpc/rpc.h> #include<sys/types.h> long *si_1(arecord,c1) CLIENT *c1; struct record *arecord;

32

{ static long result; result =(arecord->p *arecord->n * arecord->r)/100; return(&result); }

rsi.c //client routine


#include<stdio.h> #include<rpc/rpc.h> #include"si.h" main( int argc,char* argv[]) { CLIENT *c1; char *server; long *lresult; struct record *s; s->p=200; s->r=10; s->n=50; server=argv[1]; c1=clnt_create(server,SI_PROG,SI_VERS,"UDP"); lresult=si_1(s,c1); printf("simple interset =%ld \n",*(lresult)); clnt_destroy(c1); exit(0); 33

} OUTPUT: [cse31a@CSELAB 3010]$ rpcgen si.x [cse31a@CSELAB 3010]$ vi si_svc.c (change si_1_svc to si_1) [cse31a@CSELAB 3010]$ cc si_proc.c -o server si_svc.c si_xdr.c [cse31a@CSELAB 3010]$ ./server [cse31a@CSELAB 3010]$ cc rsi.c -o rsi si_clnt.c si_xdr.c [cse31a@CSELAB 3010]$ ./rsi 192.168.220.10 simple interset =1000

13.IMPLEMENTATION OF REMOTE PROCEDURE CALL PRIME NUMBER

prime.x file
struct record { int p; }; program PRIME_PROG

34

{ version PRIME_VERS { long PRIME(record)=1; }=1; }=0x31234567;

prime_proc.c //server routine


#include"prime.h" #include<rpc/rpc.h> #include<sys/types.h> long *prime_1(arecord,c1) CLIENT *c1; struct record *arecord; { static long result; int i; int flag=0; for(i=2;i<arecord->p;i++) if(arecord->p%i==0) { flag=1; break; } result =flag; return(&result); }

prime.c //client routine


35

#include<stdio.h> #include<rpc/rpc.h> #include"prime.h" main( int argc,char* argv[]) { CLIENT *c1; char *server; long *lresult; struct record *s; printf(Enter number:\n); scanf(%d,&s->p); server=argv[1]; c1=clnt_create(server,PRIME_PROG,PRIME_VERS,"UDP"); lresult=prime_1(s,c1); if(*lresult==0) printf("%d is prime \n",s->p); else printf(%d is not prime\n,s->p); clnt_destroy(c1); exit(0); } OUTPUT: [cse31a@CSELAB 3010]$ rpcgen prime.x [cse31a@CSELAB 3010]$ vi prime_svc.c (change prime_1_svc to prime_1) [cse31a@CSELAB 3010]$ cc prime_proc.c -o server prime_svc.c prime_xdr.c [cse31a@CSELAB 3010]$ ./server 36

[cse31a@CSELAB 3010]$ cc prime.c -o client prime_clnt.c prime_xdr.c [cse31a@CSELAB 3010]$ ./client 192.168.220.10 Enter number: 13 13 is prime

37

You might also like