linux下查看网卡名字与mac地址源码
发布日期:2021-06-30 10:12:16
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月27日 12时25分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
portainer的安装
2021-07-03
密码基础之加密模式和填充模式
2021-07-03
JDK自带数字摘要接口API
2021-07-03
mysql之load data into file语法
2021-07-03
无外网情况安装docker,并导入镜像
2021-07-03
resin服务器搭建
2021-07-03
安装smokeping
2021-07-03
解决ubuntu上网问题
2021-07-03
thymeleaf获取项目路径端口等信息
2021-07-03
jquery-validate验证时间区间
2021-07-03
centos6安装图形界面
2021-07-03
typeAliasesPackage配置多个
2021-07-03
springboot扫描不同包下的Bean
2021-07-03
F-Scrack检测端口使用即DBScanner使用
2021-07-03
启动Vmware报zlib1.dll错误
2021-07-03
KNN算法
2021-07-03
内网外网的连通
2021-07-03
canal环境安装及springboot同步实验
2019-04-30
js验证ip地址
2019-04-30