REMOTE PROCEDURE CALL (RPC) USING SOCKETS

Server program
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<errno.h>
int i,f;
int main()
{
int sd,acpt,port,len,n,result;
char choice[50];
struct sockaddr_in serv,cli;
if((sd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("Error in socket\n");
exit(0);
}
bzero(&serv,sizeof(serv));
printf("Enter the port number : ");
scanf("%d",&port);
serv.sin_family=AF_INET;
serv.sin_port=htons(port);
serv.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sd,(struct sockaddr *)&serv,sizeof(serv))<0)
{
printf("Error in bind\n");
exit(0);
}
if(listen(sd,3)<0)
{
printf("Error in listen\n");
exit(0);
}
len=sizeof(cli);
if((acpt=accept(sd,(struct sockaddr*)&cli,&len))<0)
{
printf("Error in accept");
exit(0);
}
while(1)
{
recv(acpt,&n,sizeof(n),0);
printf("\nThe number is received : %d",n);
result=fact(n);
printf("\n the factorial value is : %d\n",result);
send(acpt,&result,sizeof(result),0);
result=0;
recv(acpt,&choice,sizeof(choice),0);

if(strcmp(choice,"n")==0)
{
printf("\n*** Server exit ***\n");
break;
}

}
close(acpt);
close(sd);
return 0;
}
Client program

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<errno.h>
int main()
{
int sd,acpt,con,port,n,result;
char choice[50];
struct sockaddr_in serv,cli;
if((sd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("Error in socket\n");
exit(0);
}
bzero(&serv,sizeof(serv));
printf("Enter the port number  :  ");
scanf("%d",&port);
serv.sin_family=AF_INET;
serv.sin_port=htons(port);
serv.sin_addr.s_addr=htonl(INADDR_ANY);
if(con=connect(sd,(struct sockaddr *)&serv,sizeof(serv))<0)
{
printf("Error in connection\n");
exit(0);
}
while(1)
{
printf("\nEnter the first data  :");
scanf("%d",&n);
send(sd,&n,sizeof(n),0);
recv(sd,&result,sizeof(result),0);
printf("\nThe factorial  value is :%d",result);
printf("\nDo you want continue : ");
scanf("%s",&choice);
send(sd,&choice,sizeof(choice),0);
if(strcmp(choice,"n")==0)
{
printf("\n*** Client exit ***\n");
break;
}
}
close(sd);
}

OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 9rcpfactser.c
[11ca013@mcalinux network]$ ./a.out
Enter the port number : 1806

The number is received : 2
 the factorial value is : 2

The number is received : 3
 the factorial value is : 6

The number is received : 4
 the factorial value is : 24

The number is received : 5
 the factorial value is : 120

The number is received : 5
 the factorial value is : 120

The number is received : 5
 the factorial value is : 120

CLIENT

[11ca013@mcalinux network]$ cc 9rcpfactcli.c
[11ca013@mcalinux network]$ ./a.out
Enter the port number  :  1806

Enter the first data  :2

The factorial  value is :2
Do you want continue : 1

Enter the first data  :3

The factorial  value is :6
Do you want continue : 1

Enter the first data  :4

The factorial  value is :24
Do you want continue : 1

Enter the first data  :5

The factorial  value is :120

Do you want continue : 0

DISPLAYING NAME AND ADDRESS USING SOCKETS

SERVER

#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <netinet/in.h>
main()
{
int st,st2,nst,sport,len;
char sendmsg[20],recmsg[20];
struct sockaddr_in servaddr,cliaddr;
printf("enter the port number   :");
scanf("%d",&sport);
st=socket(AF_INET,SOCK_STREAM,0);
if(st<0)
printf("\n CANNOT CREATED SOCKET\n");
else
printf("\nSOCKET IS CREATED SUCC FULLY");
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(sport);
servaddr.sin_addr.s_addr=inet_addr("192.168.1.134");
st2=bind(st,(struct sockaddr*)&servaddr,sizeof(servaddr));
if(st2<0)
printf("\n ERRORING BINDED\n");
else
printf("\nBINDED\n");
listen(st,5);
len=sizeof(cliaddr);
nst=accept(st,(struct sockaddr*)&cliaddr,&len);
if(nst<0)
printf("\nERRORING ACCEPTING\n");
else
printf("\n ACCEPTING\n");
printf("\n\t The client address is %s",inet_ntoa(cliaddr.sin_addr.s_addr));
}



CLIENT

#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <netinet/in.h>
main()
{
int st,cport;
char sendmsg[20],recmsg[20];
struct sockaddr_in servaddr,cliaddr;
printf("enter the port number   :");
scanf("%d",&cport);
st=socket(AF_INET,SOCK_STREAM,0);
if(st<0)
printf("\n CANNOT CREATED SOCKET\n");
else
printf("\nSOCKET IS CREATED SUCCESSFULLY");
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(cport);
servaddr.sin_addr.s_addr=inet_addr("192.168.1.134");
if(connect(st,(struct sockaddr*)&servaddr,sizeof(servaddr))
<0)
printf("\n ERRORING CONNECTION\n");
else
printf("\nCONNECTION SUCCESSFULLY\n");
}
















OUTPUT
SERVER

[11ca013@mcalinux network]$ cc exno2server.c
[11ca013@mcalinux network]$ ./a.out
enter the port number   :4251

SOCKET IS CREATED SUCC FULLY
BINDED


ACCEPTING

         The client address is 192.168.1.134


CLIENT

[11ca013@mcalinux network]$ cc exno2client.c
[11ca013@mcalinux network]$ ./a.out
enter the port number   :4251

SOCKET IS CREATED SUCCESSFULLY

CONNECTION SUCCESSFULLY

DISPLAYING DATE AND TIME USING UDP

Server program

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <time.h>

int main()
{
int sfd,r,bi,port;
char buff[1024];
struct sockaddr_in servaddr,cliaddr;
socklen_t clilen;
sfd=socket(AF_INET,SOCK_DGRAM,0);
if(sfd==-1)
{
perror("Socket");
return 0;
}

printf("\n Enter the port no:");
scanf("%d",&port);
printf("The port no is:%d\n",port);
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr = INADDR_ANY;

bi=bind(sfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
if(bi==-1)
{
perror("Bind()");
return 0;
}

clilen = sizeof(cliaddr);
r=recvfrom(sfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr,&clilen);
buff[r]=0;
time_t ticks;
ticks = time(NULL);
snprintf(buff,sizeof(buff),"%24s\r\n",ctime(&ticks));
sendto(sfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr,sizeof(cliaddr));
exit(0);
return 0;
}

Client program

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>

int main()
{
int listenfd,port,r;
char buff[1024];
struct sockaddr_in servaddr,cliaddr;
socklen_t servlen;
listenfd = socket(AF_INET,SOCK_DGRAM,0);
if(listenfd==-1)
{
perror("Socket");
return 0;
}

printf("\n Enter the port no:");
scanf("%d",&port);
printf("The port no is:%d",port);
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr = INADDR_ANY;
sendto(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr,sizeof(servaddr));
r=recvfrom(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr,&servlen);
buff[r]=0;
printf("\n The time received from the server:%s\n",buff);
exit(0);
return 0;
}


OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 3udpser.c
[11ca013@mcalinux network]$ ./a.out

 Enter the port no:8686
The port no is:8686

CLIENT

[11ca013@mcalinux network]$ cc 3udpcli.c
[11ca013@mcalinux network]$ ./a.out
                                              
Enter the port no:8686
The port no is:8686

 The time received from the server: Thu Feb 14 14:16:44 2013

DISPLAYING DATE AND TIME USING TCP

Server program

#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main()
{
int sd,i,len,bi,nsd,port;
char content[30],buff[30],last_received[30];
struct sockaddr_in ser,cli;
if((sd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)
{
printf("\n Socket problem");
return 0;
}
printf("\n Socket created\n");
bzero((char*)&cli,sizeof(ser));
printf("ENTER PORT NO:\n");
scanf("%d",&port);
printf("\n Port Address is %d\n:",port);
ser.sin_family=AF_INET;
ser.sin_port=htons(port);
ser.sin_addr.s_addr=htonl(INADDR_ANY);

bi=bind(sd,(struct sockaddr *)&ser,sizeof(ser));
if(bi==-1)
{
printf("\n bind error, port busy, plz change port in client and server"
return 0;
}
i=sizeof(cli);
listen(sd,5);
nsd = accept(sd,((struct sockaddr *)&cli),&i);


if(nsd==-1)
{
printf("\ncheck the description parameter\n");
return 0;
}
printf("\nConnection accepted");

time_t ticks;
ticks=time(NULL);
snprintf(buff,sizeof(buff),"%24s\r\n",ctime(&ticks));

send(nsd,buff,30,0);
printf("\n Bye..");
send(nsd,"EOF",4,0);
close(sd);
close(nsd);
return 0;
}

Client program

#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int sd,con,port,i;
char content[30];
struct sockaddr_in cli;
if((sd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)
{
printf("\n Socket problem");
return 0;
}
bzero((char*)&cli,sizeof(cli));
cli.sin_family = AF_INET;
printf("ENTER PORT NO");
scanf("%d",&port);
cli.sin_port=htons(port);
cli.sin_addr.s_addr=htonl(INADDR_ANY);
con=connect(sd,(struct sockaddr*)&cli,sizeof(cli));
if(con==-1)
{
printf("\n connection error");
return 0;
}
i=recv(sd,content,30,0);
printf("Received from server %s\n",content);
close(sd);
return 0;
}

OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 3tcpser.c
[11ca013@mcalinux network]$ ./a.out

 Socket created
ENTER PORT NO:  8596
 Port Address is 8596
Connection accepted
 Bye..

CLIENT

[11ca013@mcalinux network]$ cc 3tcpcli.c
[11ca013@mcalinux network]$ ./a.out

ENTER PORT NO8596
Received from server Thu Feb 14 14:03:24 2013


DNS USING SOCKETS

Database program

#include<stdio.h>
main()
{
 int n,i;
 FILE *fd;
 struct
 {
  char domain[16];
  char ipaddr[16];
 } address;
 fd=fopen("drsi.txt","w");
printf("\n\t Enter the total No of ADDRESS :");
scanf("%d",&n);
 for(i=0;i<n;i++)
{
  printf("\n\t Enter the Domain name, IP address\n");
  scanf("%s%s",address.domain,address.ipaddr);
 fprintf(fd,"%s\n%s\n",address.domain,address.ipaddr);
}
}

Server program

 #include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netdb.h>
#define BACKLOG 5
main()
{
 int sd,sd1,len,port;
 FILE *f1;
 struct
 {
   char dname[16];
   char ipaddr[24];
 } address;
 struct sockaddr_in serv,cli;
 char buf[50],res[50],buf1[155];
 if((sd=socket(AF_INET,SOCK_STREAM,0)) == -1)
 {
   printf("\n\t Error in Creation of Sockets ");
   exit(-1);
 }

 bzero(&(cli.sin_zero),8);
 serv.sin_family=AF_INET;
 printf("\tEnter the port number  : ");
 scanf("%d",&port);
 serv.sin_port=htons(port);
 serv.sin_addr.s_addr=htonl(INADDR_ANY);
 if(bind(sd,(struct sockaddr*)&serv,sizeof(serv)) <0)
 {
  printf("\n\t Error in Bind ");
  exit(-1);
 }
 if(listen(sd,BACKLOG)== -1)
 {
  printf("\n\t Error in Listen ");
   exit(-1);
 }
 len=sizeof(cli);
 if((sd1=accept(sd,(struct sockaddr *)&cli,&len)) <0)
 {
  printf("\n\t Error in accept");
  exit(-1);
 }
 printf("\n\tConnection Established ");
 do
 {
   recv(sd1,buf,50,0);
   printf("\n\t The Given domain is : %s \n",buf);
    f1=fopen("drsi.txt","r");

    while(!feof(f1))
   {
    fscanf(f1,"%s %s",address.dname,address.ipaddr);
    if(strcmp(buf,address.dname)==0)
    {
     strcpy(res,address.ipaddr);
     break;
    }
    else
     strcpy(res,"NIL");
  }
fclose(f1);
 printf("\n\t The IP address for the given domain is : %s \n");
 send(sd1,res,50,0);
 }
while((strcmp(buf,"exit")) != 0);
close(sd1);
}

Client program

#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netdb.h>
#define MAXDATASIZE 100
main()
{
 int sd,numbytes=0,port;
 struct sockaddr_in serv;
 char buf[MAXDATASIZE],buf1[50];
 if((sd=socket(AF_INET,SOCK_STREAM,0)) == -1)
 {
   printf("\n\t Error in Creation of Sockets ");
   exit(-1);
 }

 bzero(&(serv.sin_zero),8);
 serv.sin_family=AF_INET;
printf("\tEnter the port numbetr  : ");
scanf("%d",&port);
 serv.sin_port=htons(port);
 serv.sin_addr.s_addr=htonl(INADDR_ANY);

 if(connect(sd,(struct sockaddr*)&serv,sizeof(serv)) <0)
 {
  printf("\n\t Error in Connect ");
  exit(-1);
 }
 printf("\n\tConnection Established ");
 do
 {
   printf("\n\t Enter the Domain name : ");
   scanf("%s",buf);
   send(sd,buf,50,0);
   recv(sd,buf1,50,0);
   printf("\n\t Equal IP Address : %s\n",buf1);
 }
while((strcmp(buf,"exit")) != 0);
close(sd);
exit(0);
}






























OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 14samser.c
[11ca013@mcalinux network]$ ./a.out
        Enter the port number  : 3326

        Connection Established
         The Given domain is : www.rajiv.org

         The IP address for the given domain is : 192.1.1.1

         The Given domain is : www.gandhi.in

         The IP address for the given domain is : 192.2.2.2

         The Given domain is : www.selva.com

         The IP address for the given domain is : 192.3.3.3

CLIENT

[11ca013@mcalinux network]$ cc 14samcli.c
[11ca013@mcalinux network]$ ./a.out
        Enter the port numbetr  : 3326

        Connection Established
         Enter the Domain name : www.rajiv.org

         Equal IP Address : 192.1.1.1

         Enter the Domain name : www.gandhi.in

         Equal IP Address : 192.2.2.2

         Enter the Domain name : www.selva.com


         Equal IP Address : 192.3.3.3



Your IP Address is:

Browser: