linux下查看网卡名字与mac地址源码
发布日期:2021-06-30 10:12:16
浏览次数:3
分类:技术文章
本文共 1387 字,大约阅读时间需要 4 分钟。
#include#include #include #include #include #include #include #include #include #include #define EHOMAC_FILEPATH "/sys/class/net"
1.首先头文件,调用getdirentname(EHOMAC_FILEPATH),可以获得网卡的名字。entry->d_name遍历出每个应用层显示出的网卡名字。
string regMacInfo::getdirentname(string fileaddress){ string macinfo = ""; DIR *d = opendir(fileaddress.c_str()); if(NULL== d) { return "error"; } struct dirent * entry; while((entry=readdir(d))!=NULL) { if(strcmp(entry->d_name,".")==0 | strcmp(entry->d_name,"..")==0 |strcmp(entry->d_name,"lo")==0) { continue; } macinfo=macinfo+"#"+getnamebymacname(entry->d_name); } closedir(d); return macinfo;}
2.上面使用网卡名字获取各个mac地址的函数定义。
string regMacInfo::getnamebymacname(string macname){ struct ifreq ifreq; int sock = 0; char mac[32] = ""; sock = socket(AF_INET,SOCK_STREAM,0); if(sock < 0) { perror("error sock"); return "error"; } strcpy(ifreq.ifr_name,macname.c_str()); if(ioctl(sock,SIOCGIFHWADDR,&ifreq) < 0) { perror("error ioctl"); return "error"; } int i = 0; for(i = 0; i < 6; i++){ sprintf(mac+3*i, "%02x:", (unsigned char)ifreq.ifr_hwaddr.sa_data[i]); } mac[strlen(mac) - 1] = 0; return mac;}本例子直接将两个结合,可以获取ifconfig命令下看到的mac地址。
转载地址:https://islet.blog.csdn.net/article/details/79552653 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月17日 08时25分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2021年不可错过的17种JS优化技巧(一)
2019-04-30
2021年不可错过的17种JS优化技巧(二)
2019-04-30
月薪15~20k的前端面试问什么?
2019-04-30
一文学会使用Vue3
2019-04-30
我是如何看Vue源码的
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
LVM逻辑卷------基础命令详解(三分钟入门)
2021-07-03
LVM逻辑卷------详细操作过程(三分钟上手)
2021-07-03
mysql——介绍及安装与基本用法
2021-07-03
MySQL数据库之索引
2021-07-03
MYSQL——事务操作+视图+存储引擎
2021-07-03
Mysql——完全备份+增量备份+备份恢复
2021-07-03
MySQL进阶查询(SELECT 语句高级用法)
2021-07-03
Mysql 之主从复制
2021-07-03
LVS负载均衡------NAT模式
2021-07-03
squid代理-----透明代理模式
2021-07-03
squid代理介绍----ACL控制应用+sarg日志分析+反向代理
2021-07-03
redis集群之主从模式+哨兵模式
2021-07-03