局域网内,已知IP地址,获得MAC地址
来源:互联网 发布:extjs获取store数据 编辑:程序博客网 时间:2024/05/18 03:01
今天碰到了这样的一个问题。上网勾了老半天,看到的大部份是在window下实现的。但是我要在linux下编程获得,网上有些方法太复杂了,选了两种比较简单的,记一下以作参考。
方法一、使用系统的命令arping
命令格式:arping IP Address
该命令返回的内容就有包含访问IP对应的MAC地址,再通过脚本编程,就可以获得它的MAC地址了。
方法二、访问 /proc/net/arp 这个文件的内容。
这是一个临时文件,它记录着访问本机的IP地址、MAC地址等信息,我们就可以通过读取这个文件来获得MAC地址。(我就是要在CGI程序中获得访问客户端的IP和MAC,下面是简单的实现程序。)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *hostip;
unsigned long int destip,dwRet;
unsigned long ullen;
char bymac[6];
FILE *fp;
char ip_addr[25],hw_type[25],flags[25],hw_addr[25],mask[25],device[25],tmp[25];
printf("Content-type:text/html;/n/n");
hostip=getenv("REMOTE_ADDR");//获得IP地址
printf("IP ADDRESS:%s/n",hostip);
fp=fopen("/proc/net/arp","r");//打开/proc/net/arp文件
if(fp==NULL)return 0;
fscanf(fp,"%s %s %s %s %s %s %s %s %s",tmp,tmp,tmp,tmp,tmp,tmp,tmp,tmp,tmp);
while(!feof(fp))
{
fscanf(fp,"%s %s %s %s %s %s",ip_addr,hw_type,flags,hw_addr,mask,device);
if(strcmp(ip_addr,hostip)==0)//比较IP地址,相同就输出MAC
{
printf("MAC ADDRESS:%s/n",hw_addr);
break;
}
}
return 0;
}
Window实现方法比较简单,就是用了SendARP函数获得。
- 局域网内,已知IP地址,获得MAC地址
- 获得局域网内IP地址和主机名
- 在同一个网段局域网内,通过ip地址获得机器的mac地址
- 局域网内,查找指定IP地址的MAC地址
- 通过Ip在局域网内获得指定网络设备的MAC地址
- 在控制台获得局域网内的所有IP地址
- 根据已知IP地址查询局域网中对应网卡的MAC地址
- 如何查看局域网内其他计算机的MAC地址和IP
- 查看局域网内其他计算机的mac地址和ip
- 局域网内知道Mac地址查询对应IP
- 获得ip和mac地址
- 获得ip和mac地址
- 获得ip和mac地址
- 通过IP地址获得mac地址
- Dos命令行下,如何通过IP地址获取局域网内机器的MAC地址?
- 【转】C#得到局域网内所有主机名,IP地址,MAC地址
- 通过 ARP 协议获取局域网内指定 IP 地址的机器的 MAC 地址
- 如何查找局域网内网卡的MAC地址。
- 中国历史上15个民族的最后结局
- SQLServer2000
- 三大WEB server 对比分析(apache ,lighttpd,nginx)
- Subversion实践案例——精细化的访问控制(一)
- 坚持瑜伽已经三个月了
- 局域网内,已知IP地址,获得MAC地址
- 满意
- 三位千万富翁告诉你:钱是怎么赚来的
- 第七颗头骨 & 忘魂花 凤凰
- 如何从DC中取出Bitmap以完成图象抖动
- 程序的自动更新
- java排序
- volidate关键字的使用
- MYSQL update 某项值为空.