// 利用ioctl获取本机指定设备的MAC地址
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/ioctl.h>
#include<net/if.h>
#include<netinet/ip.h>
#include<net/if_arp.h>
#include<sys/sysctl.h>
int main(int argc, char **argv)
{
struct sockaddr_in *addr;
struct ifreq ifr;
unsigned char *mac;
char *address;
int sockfd;
if (argc < 2)
{
printf("Usage : %s interface\n", argv[0]);
return 1;
}
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
strncpy(ifr.ifr_name, argv[1], IFNAMSIZ - 1);
if (ioctl(sockfd, SIOCGIFADDR, &ifr) == -1)
{
perror("ioctl");
exit(1);
}
addr = (struct sockaddr_in *)&(ifr.ifr_addr);
address = inet_ntoa(addr->sin_addr);
printf("inet addr: %s\n", address);
if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) == -1)
{
perror("ioctl error");
exit(1);
}
mac = (unsigned char*)(ifr.ifr_hwaddr.sa_data);
printf("mac address: %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
printf("%d: [%s]----\n", strlen(mac), mac);
return 0;
}

运行结果:

[zcm@t #113]$make
gcc    -c -o a.o a.c
gcc  -o a a.o
[zcm@t #114]$./a eth1
inet addr: 172.25.25.97
mac address: 00:0c:29:63:38:81
0: []----
[zcm@t #115]$./a eth0
ioctl: No such device
[zcm@t #116]$

利用ioctl获取本机指定设备的MAC地址相关推荐

  1. android arp工具,GitHub - SummerSnow274/ARP_sed_rev: 在Android通过ARP询问实现获取同一网络所有设备的MAC地址,AP隔离的网络除外...

    ARP_sed_rev 在Android通过ARP询问实现获取同一网络所有设备的MAC地址,AP隔离的网络除外 arpsed.c 编译:gcc arpsed.c -o arpsed 运行:sudo . ...

  2. 批处理获取本机IP(局域网)及MAC地址

    ::==================批处理获取本机IP(局域网)及MAC地址============== ::code by youxi01@bbs.bathome.cn 2008-1-5 @ec ...

  3. Python获取本机所有网卡的MAC地址

    在拙作<Python可以这样学>(清华大学出版社,2017.2)第297页介绍了一种获取本机网卡MAC地址的方法,不过代码显得稍微有点啰嗦,并且只能获得一块网卡的MAC地址.本文对该内容稍 ...

  4. 在Linux上利用python获取本机ip

    下面介绍在Linux上利用python获取本机ip的方法. 经过网上调查, 发现大致有两种方法, 一种是调用shell脚本,另一种是利用python中的socket等模块来得到,下面是这两种方法的源码 ...

  5. android 获取mac c语言,获取设备的mac地址和IP地址(android6.0以上专用)

    /** * 获取设备HardwareAddress地址 * @return */ public static String getMachineHardwareAddress(){ Enumerati ...

  6. android 获取网卡mac_Java获取Linux安卓设备的mac地址方法

    Java如何获取Linux或安卓Android设备的mac地址呢?方法非常简单,只需要使用下方代码即可轻松通过java获取mac地址了,代码如下:public String getMacAddress ...

  7. 关于获取安卓设备的mac地址

    今日发现一个问题,系统要求从设备上获取一个唯一码作为当前登录用户的唯一标识: 之前尝试过很多方法,最后决定采用mac地址. 官方获取mac地址的方法是: public static String ge ...

  8. android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法

    本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...

  9. Android studio 获取设备的Mac地址,wifi和以太网均可使用

    /*** 获取设备的Mac地址* @return Mac地址*/public static String getLocalMacAddress() {String Mac=null;try{Strin ...

最新文章

  1. 学嵌入式Linux软件开发需要的知识
  2. 巡检水中机器人_海洋与地球学院学子在2020年国际水中机器人大赛中获得佳绩...
  3. linux中可以安装不同版本的gcc么,在linux下安装多个版本的GCC
  4. 怎么让IIS支持PHP
  5. 异常处理、集合框架和反射
  6. pytorch torch.normal
  7. leapftp 3.0.1使用教程,leapftp 3.0.1使用教程图解
  8. Android的一个登陆注册页面
  9. 快捷打开计算机管理设置,Win7系统下怎么设置Ctrl+Alt+Del快捷打开任务管理器【图文】...
  10. html采集插件如何用,火车采集器插件功能详解
  11. 苹果11蓝牙配对不成功怎么办_iphone11蓝牙搜不到设备怎么办
  12. 嵌入式面试之————大小端
  13. Struts2中XXX.Action类中方法的访问(三种方式)
  14. 搜索引擎如何判定站群是否作弊?
  15. 最小二乘法函数拟合原理及matlab实现—数学笔记
  16. CF1004D Sonya and Matrix
  17. 英语中’s和s’的区别
  18. 全国每年计算机专业毕业生有多少,计算机专业国内就业分析
  19. 生命的计算和计算的生命
  20. MT【170】裂项相消

热门文章

  1. 如何建立双机热备系统
  2. 废水处理计算书 excel_废水监测数据是匿名的吗?
  3. javascript 布尔_JavaScript布尔说明-如何在JavaScript中使用布尔
  4. 链接访问后刷新颜色回到初始_如何使链接可访问(提示:颜色不够)
  5. 1到100的二进制编码_每天经过100天的编码后,我学到了什么
  6. 如何使用Webpack 4简化React.js开发过程
  7. python:单元测试框架pytest的一个简单例子
  8. Spring注解依赖注入的三种方式的优缺点以及优先选择
  9. linq 分组求和的一般方法
  10. 8.19noip模拟题