Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
apsrcreatix
GitHub Repository: apsrcreatix/Socket-Programming-With-C
Path: blob/master/10-ARP-implementation-using-UDP/arp.c
137 views
1
#include<sys/types.h>
2
#include<sys/socket.h>
3
#include<net/if_arp.h>
4
#include<sys/ioctl.h>
5
#include<stdio.h>
6
#include<string.h>
7
#include<unistd.h>
8
#include<math.h>
9
#include<complex.h>
10
#include<arpa/inet.h>
11
#include<netinet/in.h>
12
#include<netinet/if_ether.h>
13
#include<net/ethernet.h>
14
#include<stdlib.h>
15
int main()
16
{
17
struct sockaddr_in sin={0};
18
struct arpreq myarp={{0}};
19
unsigned char *ptr;
20
int sd;
21
sin.sin_family=AF_INET;
22
printf("Enter IP address: ");
23
char ip[20];
24
scanf("%s", ip); if(inet_pton(AF_INET,ip,&sin.sin_addr)==0) {
25
printf("IP address Entered '%s' is not valid \n",ip);
26
exit(0);
27
}
28
memcpy(&myarp.arp_pa,&sin,sizeof(myarp.arp_pa));
29
strcpy(myarp.arp_dev,"echo");
30
sd=socket(AF_INET,SOCK_DGRAM,0);
31
printf("\nSend ARP request\n");
32
if(ioctl(sd,SIOCGARP,&myarp)==1)
33
{
34
printf("No Entry in ARP cache for '%s'\n",ip);
35
exit(0);
36
}
37
ptr=&myarp.arp_pa.sa_data[0];
38
printf("Received ARP Reply\n");
39
printf("\nMAC Address for '%s' : ",ip);
40
printf("%p:%p:%p:%p:%p:%p\n",ptr,(ptr+1),(ptr+2),(ptr+3),(ptr+4),(ptr+5));
41
return 0;
42
}
43