linux下查看网卡名字与mac地址源码
2018-03-20 15:29
302 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/socket.h> #include <netinet/in.h> #include <net/if.h> #include <sys/types.h> #include <dirent.h> #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地址。
相关文章推荐
- 查看Linux网卡UUID和MAC地址---Linux命令
- 在Linux下,在网络没有配置好前,怎样查看网卡的MAC地址?
- 在Linux下,在网络没有配置好前,如何查看网卡的MAC地址?
- linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
- linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
- linux中查看网卡mac地址
- linux命令源码的查看
- (Mark) (Ubuntu)Ubuntu 12.04 LTS 添加虚拟网卡设置硬件MAC地址 (Linux) (MAC)
- Linux 软件安装使用(6)源码查看工具
- linux查看网卡驱动的方法
- 查看Linux下网卡状态与是否连接
- Linux查看网卡芯片型号
- linux 利用nethogs查看某进程的网卡流量
- Linux 网卡流量查看的方法及各自特点
- linux使用nload查看网卡流量
- linux查看网卡型号、驱动版本、队列数
- Linux查看CPU,内存,网卡,硬盘的型号
- linux 查看网卡相关信息
- linux 查看网卡流量
- Linux下查看网卡实时流量工