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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:在linux下安装pyinstaller
下一篇:OSError: [WinError 126] 找不到指定的模块,libcrypto-1_1-x64.dll缺失【提供百度云下载】

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月27日 12时25分52秒