ADDRESS RESOLUTION PROTOCOL (ARP) 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","-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(ip[i],rmsg)==0)
   {
   strcpy(smsg,mac[i]);
   printf("\nRecv ip address =%s",rmsg);
   printf("\nThe MAC address =%s",mac[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 ip 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("send mac address = %s",rmsg);
}
return 0;
}
OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 10arpser.c
[11ca013@mcalinux network]$ ./a.out

         Enter the Port : 3326

         Accepted
Recv ip address =192.1.1.134
The MAC address =00-01-6C-47-EB-D3
Recv ip address =192.1.1.135
The MAC address =00-01-6C-47-EB-D4
Recv ip address =192.1.1.136
The MAC address =00-01-6C-47-EB-D5
Recv ip address =192.1.1.137
The MAC address =00-01-6C-47-EB-D6

CLIENT

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

         Enter the Port : 3326

Enter the MAC address  192.1.1.134
The recv IP address = 00-01-6C-47-EB-D3
Enter the MAC address  192.1.1.135
The recv IP address = 00-01-6C-47-EB-D4
Enter the MAC address  192.1.1.136
The recv IP address = 00-01-6C-47-EB-D5
Enter the MAC address  192.1.1.137
The recv IP address = 00-01-6C-47-EB-D6

Enter the MAC address  exit

ADDRESS CONVERSION FOR LOGICAL ADDRESS INTO PHYSICAL ADDRESS

Server program

#include <stdio.h>
#include <sys/types.h>
#include <sys/shm.h>
int main()
{
int shmid;  int a,i;
char *ptr,*shmptr;
shmid=shmget(1200,10,IPC_CREAT|0666);
shmptr=shmat(shmid,NULL,0); //attaching a ptr to shm area
ptr=shmptr;
for(i=0;i<3;i++)
{
puts("\n Enter the MAC:");
scanf("%s",ptr);
a=strlen(ptr);
ptr[a]=' ';
puts("\n Enter the IP:");
ptr=ptr+a+1;
scanf("%s",ptr);
a=strlen(ptr);
ptr[a]='\n';
ptr=ptr+a+1;
}
ptr[strlen(ptr)]='\0';
printf("\n THE ARP TABLE AT SERVER SIDE=\n %s",shmptr);
shmdt(shmptr);   //detach
return 0;
}









Client program

#include <stdio.h>
#include <sys/types.h>
#include <sys/shm.h>
int main()
{
int shmid;  int a;
char *ptr,*shmptr;
char ip[20],mac[20],ptr2[20];
shmid=shmget(1200,10,0666);
shmptr=shmat(shmid,NULL,0);
puts("THE ARP TABLE IS:");
printf("%s",shmptr);
printf("\n 1.ARP 2.RARP 3.EXIT\n");
scanf("%d",&a);
switch(a)
{
case 1:
puts("\n Enter the IP address:");
scanf("%s",ip);
ptr=strstr(shmptr,ip);
ptr-=8;
sscanf(ptr,"%s %*s",ptr2);
printf("\n MAC address:%s",ptr2);
break;
case 2:
puts("\n Enter the MAC address:");
scanf("%s",mac);
ptr=strstr(shmptr,mac);
sscanf(ptr,"%*s %s",ptr2);
printf("%s",ptr2);
break;
case 3:
exit(1);
}
}








OUTPUT

SERVER

[11ca013@mcalinux network]$ cc 10logarpser.c
 [11ca013@mcalinux network]$ ./a.out

 Enter the MAC:www.google.com
 Enter the IP:192.1.1.1
 Enter the MAC:www.yahoo.com
 Enter the IP:192.1.1.2
 Enter the MAC:www.zoho.com
 Enter the IP:192.1.1.3

 THE ARP TABLE AT SERVER SIDE=
 www.google.com 192.1.1.1
www.yahoo.com 192.1.1.2
www.zoho.com 192.1.1.3

CLIENT

 [11ca013@mcalinux network]$ cc 10logarpcli.c
THE ARP TABLE IS:
www.google.com 192.1.1.1
www.yahoo.com 192.1.1.2
www.zoho.com 192.1.1.3
 1.ARP 2.RARP 3.EXIT
2
 Enter the MAC address:

 Ip address is : 192.1.1.1

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



Your IP Address is:

Browser: