linux下获取多个网卡MAC地址
2012-10-23 17:33
771 查看
#include <arpa/inet.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <netinet/in.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
const int MAX_MAC_NUM = 128;
bool GetMac_1(vector<string>& vecMac)
{
unsigned char mac[6];
memset(mac,0,sizeof(mac));
struct ifreq ifr;
int iSoc = socket(AF_INET,SOCK_STREAM,0);
if(iSoc < 0)
{
cout<<"OPen socket Error in _GetMac\n"<<endl;
return false;
}
int iMacNum = 0;
string strMac;
char LocalMac[128];
while(iMacNum < MAX_MAC_NUM)
{
memset(&ifr,0,sizeof(ifr));
sprintf(ifr.ifr_name,"eth%d",iMacNum);
if(ioctl(iSoc,SIOCGIFHWADDR,&ifr,sizeof(ifr)) == 0)
{
memcpy(mac,ifr.ifr_hwaddr.sa_data,6);
memset(LocalMac,0,128);
sprintf(LocalMac,"%02X%02X%02X%02X%02X%02X",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
strMac = LocalMac;
vecMac.push_back(strMac);
}
else
break;
++iMacNum;
}
close(iSoc);
}
int main()
{
vector<string> vecMac;
GetMac_1(vecMac);
vector<string>::iterator beg = vecMac.begin();
vector<string>::iterator end = vecMac.end();
cout<<"Mac: "<<endl;
while(beg < end)
{
cout<<*beg<<endl;
++beg;
}
}
#include <net/if.h>
#include <net/if_arp.h>
#include <netinet/in.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
const int MAX_MAC_NUM = 128;
bool GetMac_1(vector<string>& vecMac)
{
unsigned char mac[6];
memset(mac,0,sizeof(mac));
struct ifreq ifr;
int iSoc = socket(AF_INET,SOCK_STREAM,0);
if(iSoc < 0)
{
cout<<"OPen socket Error in _GetMac\n"<<endl;
return false;
}
int iMacNum = 0;
string strMac;
char LocalMac[128];
while(iMacNum < MAX_MAC_NUM)
{
memset(&ifr,0,sizeof(ifr));
sprintf(ifr.ifr_name,"eth%d",iMacNum);
if(ioctl(iSoc,SIOCGIFHWADDR,&ifr,sizeof(ifr)) == 0)
{
memcpy(mac,ifr.ifr_hwaddr.sa_data,6);
memset(LocalMac,0,128);
sprintf(LocalMac,"%02X%02X%02X%02X%02X%02X",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
strMac = LocalMac;
vecMac.push_back(strMac);
}
else
break;
++iMacNum;
}
close(iSoc);
}
int main()
{
vector<string> vecMac;
GetMac_1(vecMac);
vector<string>::iterator beg = vecMac.begin();
vector<string>::iterator end = vecMac.end();
cout<<"Mac: "<<endl;
while(beg < end)
{
cout<<*beg<<endl;
++beg;
}
}
相关文章推荐
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- linux 设置网络API --- 开/关网卡、设置/获取Mac地址
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- Linux下C语言获取所有网卡MAC地址的代码
- 嵌入式 获取linux下的网卡的MAC地址
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- linux实用技巧:使用脚本获取活动网卡的mac地址
- 获取linux系统电脑网卡mac地址
- linux 下C实现获取网卡IP和MAC地址
- linux中查看网卡mac地址
- linux修改网卡MAC地址
- Linux系统下用C语言获取MAC地址
- PHP获取网卡MAC地址的方法
- Windows或Linux下如何查看网卡MAC地址
- C#获取cpu序列号,硬盘ID,网卡MAC地址
- C#获取本机和其它计算机物理网卡地址(MAC)
- Linux下java调取命令通过ip获取mac地址
- Java获取网卡的mac地址
- 获取网卡Mac地址
- 获取网卡的mac地址