REVERSE ADDRESS RESOLUTION PROTOCOL (RARP) USING SOCKETS

Server program

#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
 int sd,sd1,i,clilen,byterecv,sport;
 struct sockaddr_in ser,cli;
 char smsg[1024],rmsg[1024];
char ip[5][50]={"192.1.1.134","192.1.1.135","192.1.1.136","192.1.1.137",
"192.1..138"};
char mac[5][50]={"00-01-6C-47-EB-D3","00-01-6C-47-EB-D4",
"00-01-6C-47-EB-D5","00-01-6C-47-EB-D6","00-01-6C-47-EB-D7"};

printf("\n\t Enter the Port : ");
scanf("%d",&sport);
if((sd=socket(AF_INET,SOCK_STREAM,0))<0)
{
  printf("\n\t Error in socket");
  return 0;
}
bzero(&ser,sizeof(ser));
ser.sin_family=AF_INET;
ser.sin_port=htons(sport);
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sd,(struct sockaddr*)&ser,sizeof(ser)) <0)
{
  printf("\n\t Error in bind");
  return 0;
}
if(listen(sd,5) <0)
{
 printf("\n\t Error in Listen");
 return 0;
}

clilen=sizeof(cli);
if((sd1=accept(sd,(struct sockaddr*)&cli,&clilen)) <0)
{
 printf("\n\t Error in Accept");
 return 0;
}

 printf("\n\t Accepted ");
  while(1)
 {
  byterecv=recv(sd1,rmsg,1024,0);
  rmsg[byterecv]='\0';
  if(strcmp(rmsg,"exit")==0)
 {
  close(sd1);
  close(sd);
break;
}
else
for(i=0;i<5;i++)
 {
  if(strcmp(mac[i],rmsg)==0)
   {
   strcpy(smsg,ip[i]);
   printf("\nRecv MAC address =%s",rmsg);
   printf("\nThe IP address =%s",ip[i]);
   break;
   }
 }
 send(sd1,smsg,strlen(smsg),0);
  }
 printf("\n");
 return 0;
 }







Client program

#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
 int sd,sd1,i,clilen,byterecv,sport;
 struct sockaddr_in ser,cli;
 char smsg[1024],rmsg[1024];

printf("\n\t Enter the Port : ");
scanf("%d",&sport);
if((sd=socket(AF_INET,SOCK_STREAM,0))<0)
{
  printf("\n\t Error in socket");
  return 0;
}
bzero(&ser,sizeof(ser));
ser.sin_family=AF_INET;
ser.sin_port=htons(sport);
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(connect(sd,(struct sockaddr*)&ser,sizeof(ser)) <0)
{
  printf("\n\t Error in connect");
  return 0;
}
  while(1)
 {
  printf("\nEnter the MAC address  " );
  scanf("%s",smsg);
  if(strcmp(smsg,"exit")!=0)
 {
  send(sd,smsg,strlen(smsg),0);
 }
 else
 {
 send(sd,smsg,strlen(smsg),0);
 close(sd);
 break;
 }
byterecv=recv(sd,rmsg,1024,0);
rmsg[byterecv]='\0';
printf("The recv IP address = %s",rmsg);
}
return 0;
}
OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 11rarpser.c
[11ca013@mcalinux network]$ ./a.out
         Enter the Port : 3326
         Accepted
Recv MAC address =00-01-6C-47-EB-D3
The IP address =192.1.1.134
Recv MAC address =00-01-6C-47-EB-D4
The IP address =192.1.1.135
Recv MAC address =00-01-6C-47-EB-D5
The IP address =192.1.1.136
Recv MAC address =00-01-6C-47-EB-D6
The IP address =192.1.1.137
Recv MAC address =00-01-6C-47-EB-D7
The IP address =192.1.1.138

CLIENT

[11ca013@mcalinux network]$ cc 11rarpcli.c
[11ca013@mcalinux network]$ ./a.out
         Enter the Port : 3326
Enter the MAC address  00-01-6C-47-EB-D3
The recv IP address = 192.1.1.134
Enter the MAC address  00-01-6C-47-EB-D4
The recv IP address = 192.1.1.135
Enter the MAC address  00-01-6C-47-EB-D5
The recv IP address = 192.1.1.136
Enter the MAC address  00-01-6C-47-EB-D6
The recv IP address = 192.1.1.137
Enter the MAC address  00-01-6C-47-EB-D7
The recv IP address = 192.1.1.138

Enter the MAC address  exit

REMOTE COMMAND EXECUTION 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 main()
{
int sd,acpt,len,bytes,port;
char send[50],receiv[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);
}
if((acpt=accept(sd,(struct sockaddr*)NULL,NULL))<0)
{
printf("\n\t Error in accept");
exit(0);
}
while(1)
{

bytes=recv(acpt,receiv,50,0);
receiv[bytes]='\0';
if(strcmp(receiv ,"end")==0)
{
close(acpt);
close(sd);
exit(0);
}
else
{
printf("Command received : %s",receiv);
system(receiv);
printf("\n");
}
}
}

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,len,bytes,port;
char send1[50],receiv[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(connect(sd,(struct sockaddr *)&serv,sizeof(serv))<0)
{
printf("Error in connection\n");
exit(0);
}

while(1)
{

printf("Enter the command:");
gets(send1);
if(strcmp(send1,"end")!=0)
{
send(sd,send1,50,0);
}
else
{
send(sd,send1,50,0);
close(sd);
break;
}

}
}

OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 8rcpser.c
[11ca013@mcalinux network]$ ./a.out
Enter the port number  :  8596

Command received : ls
1.c               4tcpcli.c     7pingclie.c  exno2a.c               hello.txt      sevan.txt
2.c               4tcpser.c               7pingser.c             exno2client.c        mca1.txt      tcpchclient.c
3tcpcli.c      4udpcli.c              8rcpcli.c      exno2server.c       menu.sh      tcpchserver.c
3tcpser.c     4udpser.c             8rcpser.c    exnola.sh              payroll.sh    third.txt
3udpcli.c      6tcpftpcli.c  9rcpcli.c              febser.sh                         rajiv



Command received : cat sample.txt
rajivgandhi
hi
how are you

Command received : date

Fri Mar  1 11:39:14 IST 2013

Command received : cal
     March 2013
Su     Mo    Tu     We    Th     Fr      Sa
                                                          1        2
          3        4        5        6        7        8        9
10      11      12      13      14      15      16
17      18      19      20      21      22      23
24      25      26      27      28      29      30
31

Command received : end

CLIENT

[11ca013@mcalinux network]$ cc 8rcpcli.c
 [11ca013@mcalinux network]$ ./a.out

Enter the port number  :  1806

Enter the command:Enter the command:ls
Enter the command:cat sample.txt
Enter the command:date
Enter the command:cal

Enter the command:end

PING COMMAND USING SOCKETS

Server program

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
//#define port 1567
int main()
{
        int sock,con,byte_rec,flag=0,port;
        char send_data[1024],rec_data[1024];
        struct sockaddr_in ser,cli;
        int sin_size,i;
        if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)
        {
                perror("Socket\n");
                exit(1);
        }

        ser.sin_family=AF_INET;
        printf("Enter the port number   :");
        scanf("%d",&port);
        ser.sin_port=htons(port);
        ser.sin_addr.s_addr=INADDR_ANY;
        bzero(&(ser.sin_zero),8);
        if(bind(sock,(struct sockaddr*)&ser,sizeof(struct sockaddr))==-1)
        {
                perror("can't bind\n");
                exit(1);
        }
        if(listen(sock,3)==-1)
        {
                perror("listen\n");
                exit(1);
        }
        printf("Waiting \n");
        sin_size=sizeof(struct sockaddr_in);
        con=accept(sock,(struct sockaddr*)&cli,&sin_size);
        printf("Connected\n");

        while(1)
        {
                byte_rec=recv(con,rec_data,1024,0);
                rec_data[byte_rec]='\0';

                printf("\n\n\t DATA RECEIVED : %s" ,rec_data);
                if(strcmp(rec_data,"end") == 0)
                  break;
                send(con,rec_data,strlen(rec_data),0);
        }
        close(con);
        close(sock);
        return 0;
}

Client program

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<netdb.h>
#include<errno.h>
#include<sys/time.h>
int main()
{
        int sock,byte_rec,i=0,port;
        char send_data[1024],rec_data[1024];
        long sec1,sec2,msec1,msec2;
        struct hostent *host;
        struct sockaddr_in ser,cli;
        struct timeval tv;
        struct timezone tz;
        host=gethostbyname("192.168.1.134");
        if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)
        {
                perror("Socket\n");
                exit(1);
        }
        printf("socket created\n");
        ser.sin_family=AF_INET;
        printf("Enter the port number   :");
        scanf("%d",&port);
        ser.sin_port=htons(port);
        ser.sin_addr= *((struct in_addr *)host->h_addr);
        bzero(&(ser.sin_zero),8);
        if(connect(sock,(struct sockaddr*)&ser,sizeof(struct sockaddr))==-1)
        {
                perror("connect\n");
                exit(1);
        }
        while(1)
        {
                printf("Enter the data to be sent : ");
                scanf("%s",send_data);
                i++;
                gettimeofday(&tv,&tz);
                sec1=tv.tv_sec;
                msec1=tv.tv_usec;
                send(sock,send_data,strlen(send_data),0);
                if(strcmp(send_data,"end")==0)
                  break;
                byte_rec=recv(sock,rec_data,1024,0);
                gettimeofday(&tv,&tz);
                sec2=tv.tv_sec;
                msec2=tv.tv_usec;
                rec_data[byte_rec]='\0';
                printf("Data received : %s\n",rec_data);
                sec1=sec2-sec1;
                msec1=msec2-msec1;
                msec1=msec1+(sec1*1000000);
                printf("64 bytes received from 192.168.1.134 : ICMP seq no - %d:
 time - %ld microseconds\n",i+1,msec1);
        }
        close(sock);                                                        
        return 0;
}




OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 7pingser.c
[11ca013@mcalinux network]$ ./a.out
Enter the port number   :7624
Waiting
Connected

         DATA RECEIVED : ping
         DATA RECEIVED : hi
         DATA RECEIVED : how
         DATA RECEIVED : welcome
         DATA RECEIVED : end

CLIENT

[11ca013@mcalinux network]$ cc 7pingclie.c
[11ca013@mcalinux network]$ ./a.out
socket created
Enter the port number   :7624
Enter the data to be sent : ping
Data received : ping
64 bytes received from 192.168.1.134 : ICMP seq no - 2: time - 86 microseconds
Enter the data to be sent : hi
Data received : hi
64 bytes received from 192.168.1.134 : ICMP seq no - 3: time - 83 microseconds
Enter the data to be sent : how
Data received : how
64 bytes received from 192.168.1.134 : ICMP seq no - 4: time - 66 microseconds
Enter the data to be sent : welcome
Data received : welcome
64 bytes received from 192.168.1.134 : ICMP seq no - 5: time - 69 microseconds

Enter the data to be sent : end

FTP APPLICATION USING UDP

Server program

#include<sys/socket.h>
#include<sys/types.h>
#include<string.h>
#include<stdio.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
#include<netinet/in.h>
main()
{
 int sd,l;
 int fd;
 char buff[100];
 struct sockaddr_in serv,cli;
 serv.sin_family=AF_INET;
 serv.sin_addr.s_addr=inet_addr("192.168.1.134");
 serv.sin_port=4827;
 printf("\n\t UDP server for file transferring ");
 sd=socket(AF_INET,SOCK_DGRAM,0);
 if(sd<0)
  printf("\n\t Error in creation of socket");
 else
  printf("\n\t server socket created");
  if (bind(sd,(struct sockaddr *)&serv,sizeof(serv)) < 0)
  {
    printf("\n\t Bind error");      exit(0);
  }
 printf("\n\t Server is ready .......");
 printf("waiting for client .......");
 l=sizeof(cli);
 recvfrom(sd,buff,sizeof(buff)+1,0,(struct sockaddr_in *)&cli,&l);
 printf("\n\t File Name from Client :%s",buff);
 printf("\n");
 fd=open(buff,O_RDONLY);
 if(fd==-1)
 {
  sendto(sd,"NO",20,0,(struct sockaddr_in *)&cli,sizeof(cli));
 }
 else
 {
  read(fd,buff,sizeof(buff));
  if(sendto(sd,buff,sizeof(buff),0,(struct sockaddr_in *)&cli,sizeof(cli)) >0)
  printf("File has to transferred ....");
 }
 close(sd);
}

Client program

#include<sys/socket.h>
#include<sys/types.h>
#include<string.h>
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<netinet/in.h>
main()
{
 int sd,l;
 char buff[100];
 struct sockaddr_in serv,cli;
 serv.sin_family=AF_INET;
 serv.sin_addr.s_addr=inet_addr("192.168.1.134");
 serv.sin_port=4827;
 sd=socket(AF_INET,SOCK_DGRAM,0);
 if(sd<0)
  printf("\n\t Error in creation of socket");
 else
   printf("\n\t Client socket created");
 printf("\n\t enter the filename to be send :");
    scanf("%s",buff);
 if(sendto(sd,buff,sizeof(buff),0,(struct sockaddr_in *)&serv,sizeof(serv)) >0)
  printf("\n\t Filename to be send successfully");
 else
  printf("\n\t Message Failed ");
 l=sizeof(serv);
 recvfrom(sd,buff,sizeof(buff)+1,0,(struct sockaddr_in *)&serv,&l);
 if(strcmp(buff,"NO"))
 {
  printf("\n\t File Clients form server ");
  printf("%s",buff);
 }
 else
 printf("\n\t File Name does not exits");
 close(sd);
}

OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 6udpftpser.c
 [11ca013@mcalinux network]$ ./a.out 192.168.1.134

         UDP server for file transferring
         server socket created
         Server is ready .......waiting for client .......
         File Name from Client :sample.txt
File has to transferred

CLIENT

[11ca013@mcalinux network]$ cc 6udpftpcli.c
 [11ca013@mcalinux network]$ ./a.out 192.168.1.134

         Client socket created
         enter the filename to be send :sample.txt

         Filename to be send successfully
         File Clients form server
rajivgandhi
hi

how are you



Your IP Address is:

Browser: