利用ioctl获取本机指定设备的MAC地址
// 利用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地址相关推荐
- 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 . ...
- 批处理获取本机IP(局域网)及MAC地址
::==================批处理获取本机IP(局域网)及MAC地址============== ::code by youxi01@bbs.bathome.cn 2008-1-5 @ec ...
- Python获取本机所有网卡的MAC地址
在拙作<Python可以这样学>(清华大学出版社,2017.2)第297页介绍了一种获取本机网卡MAC地址的方法,不过代码显得稍微有点啰嗦,并且只能获得一块网卡的MAC地址.本文对该内容稍 ...
- 在Linux上利用python获取本机ip
下面介绍在Linux上利用python获取本机ip的方法. 经过网上调查, 发现大致有两种方法, 一种是调用shell脚本,另一种是利用python中的socket等模块来得到,下面是这两种方法的源码 ...
- android 获取mac c语言,获取设备的mac地址和IP地址(android6.0以上专用)
/** * 获取设备HardwareAddress地址 * @return */ public static String getMachineHardwareAddress(){ Enumerati ...
- android 获取网卡mac_Java获取Linux安卓设备的mac地址方法
Java如何获取Linux或安卓Android设备的mac地址呢?方法非常简单,只需要使用下方代码即可轻松通过java获取mac地址了,代码如下:public String getMacAddress ...
- 关于获取安卓设备的mac地址
今日发现一个问题,系统要求从设备上获取一个唯一码作为当前登录用户的唯一标识: 之前尝试过很多方法,最后决定采用mac地址. 官方获取mac地址的方法是: public static String ge ...
- android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法
本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...
- Android studio 获取设备的Mac地址,wifi和以太网均可使用
/*** 获取设备的Mac地址* @return Mac地址*/public static String getLocalMacAddress() {String Mac=null;try{Strin ...
最新文章
- 学嵌入式Linux软件开发需要的知识
- 巡检水中机器人_海洋与地球学院学子在2020年国际水中机器人大赛中获得佳绩...
- linux中可以安装不同版本的gcc么,在linux下安装多个版本的GCC
- 怎么让IIS支持PHP
- 异常处理、集合框架和反射
- pytorch torch.normal
- leapftp 3.0.1使用教程,leapftp 3.0.1使用教程图解
- Android的一个登陆注册页面
- 快捷打开计算机管理设置,Win7系统下怎么设置Ctrl+Alt+Del快捷打开任务管理器【图文】...
- html采集插件如何用,火车采集器插件功能详解
- 苹果11蓝牙配对不成功怎么办_iphone11蓝牙搜不到设备怎么办
- 嵌入式面试之————大小端
- Struts2中XXX.Action类中方法的访问(三种方式)
- 搜索引擎如何判定站群是否作弊?
- 最小二乘法函数拟合原理及matlab实现—数学笔记
- CF1004D Sonya and Matrix
- 英语中’s和s’的区别
- 全国每年计算机专业毕业生有多少,计算机专业国内就业分析
- 生命的计算和计算的生命
- MT【170】裂项相消
热门文章
- 如何建立双机热备系统
- 废水处理计算书 excel_废水监测数据是匿名的吗?
- javascript 布尔_JavaScript布尔说明-如何在JavaScript中使用布尔
- 链接访问后刷新颜色回到初始_如何使链接可访问(提示:颜色不够)
- 1到100的二进制编码_每天经过100天的编码后,我学到了什么
- 如何使用Webpack 4简化React.js开发过程
- python:单元测试框架pytest的一个简单例子
- Spring注解依赖注入的三种方式的优缺点以及优先选择
- linq 分组求和的一般方法
- 8.19noip模拟题