直接上代码吧,亲测可用

#include <stdio.h>                                                       /* for fprintf etc             */
#include <net/if.h>                                                      /* for struct ifreq            */
#include <net/if_arp.h>                                                  /* for ARPHRD_ETHER            */
#include <sys/ioctl.h>                                                   /* for IOCTL's                 */
#include <sys/socket.h>                                                  /* for socket(2)               */
//#include <unistd.h>                                                      /* for close                   */int main(int argc, const char *argv[]){int sockfd;struct ifreq req;char buf[32] = {0};char buf_mac[32] = {0x00, 0x04, 0x88, 0x00, 0x50, 0x15};             /* 这里为需要设置的 mac 目标值 */int i = 0;if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {perror("fail to create socket ..!");exit(1);}strcpy(req.ifr_ifrn.ifrn_name, "en1");/* 获得en1的MAC地址 */if (ioctl(sockfd, SIOCGIFHWADDR, &req) < 0) {perror("fail to ioctl ");close(sockfd);exit(1);}memcpy(buf, req.ifr_ifru.ifru_hwaddr.sa_data, 6);for (i = 0; i < 6; i++)printf("%02x:", buf[i] & 0xff);puts("\b ");//后输出不带":"memcpy(req.ifr_ifru.ifru_hwaddr.sa_data, buf_mac, 6);
//    strncpy(req.ifr_ifru.ifru_hwaddr.sa_data, buf_mac, 6);/* *设置en1的MAC地址 */if (ioctl(sockfd, SIOCSIFHWADDR, &req) < 0) {perror("fail to ioctl ");close(sockfd);exit(1);}/* *获得en1的MAC地址 */if (ioctl(sockfd, SIOCGIFHWADDR, &req) < 0) {perror("fail to ioctl ");close(sockfd);exit(1);}close(sockfd);memcpy(buf, req.ifr_ifru.ifru_hwaddr.sa_data, 6);//strncpy(buf, req.ifr_ifru.ifru_hwaddr.sa_data, 6);/* *按照xx:xx:xx:xx:xx:xx的格式显示 */for (i = 0; i < 6; i++)printf("%02x:", buf[i] & 0xff);puts("\b ");//后输出不带":"return 0;
}

ioctl函数获取/修改mac地址(C语言实现)相关推荐

  1. R语言使用basename函数获取数据链接地址中的文件名称(removes all of the path up to and including the last path separator )

    R语言使用basename函数获取数据链接地址中的文件名称(removes all of the path up to and including the last path separator (i ...

  2. ioctl(sock, SIOCGIFHWADDR, ifr)获取网卡mac地址

    ioctl(sock, SIOCGIFHWADDR, &ifr) 获取网卡mac地址 ioctl(sock, SIOCGIFINDEX, &ifr)获取网卡接口地址 为什么我bind时 ...

  3. 【瑞芯微Rockchip Linux平台】SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息

    [瑞芯微Rockchip Linux平台]SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息 1. 获取本机的蓝牙mac地址 __get_bt_mac_addr() ...

  4. 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

    开发语言:C/C++ 支持平台:Windows 实现功能: 通过WMI获取网卡MAC地址.硬盘序列号.主板序列号.CPU ID.BIOS序列号 下载地址: WMI_DeviceQuery.zip 版本 ...

  5. python修改mac地址_python利用_winreg模块制作MAC地址修改工具

    通过百度搜索知道,xp下修改MAC地址的方法主要有两个,一种是通过配置本地链接属性来实现,这种方法不适合用程序来完成,另一种是通过修改注册表来完成,本程序主要是利用了这种方法. 具体方法:Window ...

  6. Linux Intel网卡IGB驱动修改mac地址

    实然心血来潮,想研究一下Intel网卡mac地址是怎么设置的.本文使用IGB驱动,适合于i211等网卡. MAC地址对于网络来说十分重要,观察过几个网络驱动,发现在Linux内核中,MAC来龙去脉无非 ...

  7. linux内核根据skb获取目的mac地址

    linux内核根据skb获取目的mac地址 工作笔记 工作笔记 linux编程 直接通过skb里面的信息获取mac,如下 1.struct ethhdr *eth_hdr = (struct ethh ...

  8. 网关屏蔽mac地址,linux下修改mac地址方法

    局域网里有一台机器,同一网段内的机器,只有部分能够ping通,也无法ping通网关,现象很奇怪,尝试过修改IP,重启网络服务,都无法解决问题. 最后怀疑是不是网关将该机器mac地址给屏蔽掉了,因此修改 ...

  9. Linux脚本方式修改Mac地址,两种修改Linux系统中MAC地址的方法

    我们先查找MAC地址和网络接口,我们来了解一下Linux中网卡的一些细节.用这个命令来获取网络接口的详细信息: ip link show 在输出中,您将看到一些详细信息以及MAC地址: 1: lo:m ...

最新文章

  1. Markdown = PPT ?这个工具给力!
  2. 进阶:秒杀系统是如何设计的?
  3. iphone开发基础:loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法
  4. CPU核数跟多线程的关系
  5. arXiv 2019 《DCA: Diversified Co-Attention towards Informative Live Video Commenting》论文笔记
  6. 怎样准备阿里技术面试_如何准备技术面试
  7. android 应用专属目录,获取Android应用专属缓存存储目录的实例
  8. Qt文档阅读笔记-Qt工作笔记-QTableWidget::selectedItems()官方解析与实例(如何进行多选)
  9. 爬虫教程 python3_【Python3爬虫】Appium入门教程
  10. python列表知识点_列表知识点整理
  11. 三大系列总结(offset client scroll)
  12. SQL-sqlHelper001
  13. java 设置请求超时时间_java设置http请求超时时间
  14. IOS Andriod 抖音无水印下载和快手无水印下载
  15. 仿微信实现拍摄视频,实现点击无声,自动录制
  16. 创业感悟:不忘初心,方得始终
  17. Maya角色UV展平技巧笔记
  18. PHP+ mysql实现注册登录功能
  19. Code review是个数学问题:从二向箔说起
  20. 渐变折射率(GRIN)介质的构建与建模

热门文章

  1. linux系统配置Vim命令,vim配置 LINUX操作系统VIM的安装和配置
  2. 新型智能健身房如何破局重新定义健身行业
  3. React全家桶学习
  4. Python 字典(Dictionary) setdefault()方法
  5. 【死磕DDD】领域驱动架构设计核心概念
  6. python好找工作吗2017-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...
  7. HDU2097:Sky数
  8. kurento6.9.0 client java的使用方法(kurento-hello-world)
  9. 如何去除QTableWidget表格选中Item时的虚线框?
  10. oracle设置时间格式