3. sin_size=sizeof(struct sockaddr_in);
//accepting connection of client
con=accept(sock,(struct sockaddr*)&cli,&sin_size);
printf("Connectedn");
while(1)
{
//receiving data from client
byte_rec=recv(con,rec_data,1024,0);
rec_data[byte_rec]='0';
if(strcmp(rec_data,"end")==0)
{
//closing socket
close(con);
close(sock);
break;
}
else
printf("Received IP address=%sn",rec_data);
for(i=0;i<5;i++)
{
if(strcmp(ip[i],rec_data)==0)
{
strcpy(send_data,mac[i]);
printf("Mac address %s sent to clientnn",mac[i]);
4. break;
}
}
//sending data to client
send(con,send_data,strlen(send_data),0);
}
return 0;
}
/*CLIENT*/
#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>
#define port 7564
5. int main()
{
int i,sock,byte_rec;
char send_data[1024],rec_data[1024];
char ip[5][20]={"127.0.0.1","127.0.0.2","127.0.0.3","127.0.0.4","127.0.0.5"};
struct hostent *host;
struct sockaddr_in ser,cli;
host=gethostbyname("127.0.0.1");
//socket creation
if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("Socketn");
exit(1);
}
printf("socket createdn");
ser.sin_family=AF_INET;
ser.sin_port=htons(port);
ser.sin_addr= *((struct in_addr *)host->h_addr);
bzero(&(ser.sin_zero),8);
//connecting to server
if(connect(sock,(struct sockaddr*)&ser,sizeof(struct sockaddr))==-1)
6. {
perror("connectn");
exit(1);
}
while(1)
{
//sending data to server
printf("nEnter the IP address : ");
scanf("%s",send_data);
loop1:
for(i=0;i<5;i++)
{
if((strcmp(ip[i],send_data)==0)||(strcmp(send_data,"end")==0))
goto loop2;
}
if(strcmp(ip[i],send_data)!=0)
{
printf("SORRY!! Enter a VALID IP ADDRESS");
printf("nEnter the IP address:n");
scanf("%s",send_data);
goto loop1;
}
7. loop2:
if(strcmp(send_data,"end")!=0)
{
send(sock,send_data,strlen(send_data),0);
}
else
{
send(sock,send_data,strlen(send_data),0);
//closing socket
close(sock);
break;
}
//receiving data from server
byte_rec=recv(sock,rec_data,1024,0);
rec_data[byte_rec]='0';
printf("Received MAC address = %snn",rec_data);
}
return 0;
}
Output
[12mcs009@mepcolinux:~/networkslab]cat arpoutput.txt
[12mcs009@mepcolinux:~]vi arpserver.c