类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
疑问如下:
1,注册表中存有PC机网卡的MAC地址吗?这个地址是什么类型的?
2,我以为是二进制文件,然后就将其数值写入了自己定义的一个char型的数组(6个元素的char型数组)中。
但是,做了第2步操作之后打印出的数组(MAC地址)却不是我想象的那种"00 00 0E 6F"这种形式
能否有高手帮帮我~
网友回答:
得到任何ip地址的mac地址。用ARP协议。
sin.sin_family = AF_INET;
if(inet_aton(argv[1], &sin.sin_addr)==0) {
printf("%s: IP address %s not valid\n",argv[0],argv[1]);
exit(0);
}
memcpy(&myarp.arp_pa, &sin, sizeof myarp.arp_pa);
strcpy(myarp.arp_dev, "eth0");
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
printf("%s: cannot open socket\n",argv[0]);
exit(0);
}
if (ioctl(sockfd, SIOCGARP, &myarp) == -1) {
printf("%s: no entry in arp_cache for %s\n",argv[0],argv[1]);
exit(0);
}
ptr = &myarp.arp_ha.sa_data[0];
printf("%s: MAC address for %s is : ",argv[0],argv[1]);
printf("%x:%x:%x:%x:%x:%x\n",*ptr, *(ptr+1),*(ptr+2),
*(ptr+3),*(ptr+4),*(ptr+5));