获取 Linux 下 MAC 地址
2014-03-18 23:21
176 查看
#include <stdio.h> #include <net/if.h> #include <unistd.h> #include <sys/ioctl.h> //////////////////////////////////////////////////////////////////////////////// int64_t GetMAC(const char *eth_name) { int64_t macAddr = -1; struct ifreq ifreq; int32_t hSocket = socket(AF_INET, SOCK_STREAM, 0); if (hSocket < 0) { goto Exit; } sprintf(ifreq.ifr_name, "%s", (eth_name == NULL) ? "eth0" : eth_name); if (ioctl(hSocket, SIOCGIFHWADDR, &ifreq) < 0) { goto Exit; } macAddr=(((int64_t)(ifreq.ifr_hwaddr.sa_data[0]) & 0xFF) << 0) | (((int64_t)(ifreq.ifr_hwaddr.sa_data[1]) & 0xFF) << 8) | (((int64_t)(ifreq.ifr_hwaddr.sa_data[2]) & 0xFF) << 16) | (((int64_t)(ifreq.ifr_hwaddr.sa_data[3]) & 0xFF) << 24) | (((int64_t)(ifreq.ifr_hwaddr.sa_data[4]) & 0xFF) << 32) | (((int64_t)(ifreq.ifr_hwaddr.sa_data[5]) & 0xFF) << 40); Exit: if (hSocket >= 0) { close(hSocket); hSocket = -1; } return macAddr; } void GetHWaddr(unsigned char *mac) { int64_t macAddr = GetMAC("eth0"); mac[0] = (unsigned char)(macAddr >> 0); mac[1] = (unsigned char)(macAddr >> 8); mac[2] = (unsigned char)(macAddr >> 16); mac[3] = (unsigned char)(macAddr >> 24); mac[4] = (unsigned char)(macAddr >> 32); mac[5] = (unsigned char)(macAddr >> 40); } //////////////////////////////////////////////////////////////////////////////// int main() { unsigned char szMAC[8] = { 0 }; GetHWaddr(szMAC); printf("HWaddr: %02X:%02X:%02X:%02X:%02X:%02X\n", szMAC[0], szMAC[1], szMAC[2], szMAC[3], szMAC[4], szMAC[5]); return 0; }
相关文章推荐
- Linux下获取CPUID、硬盘序列号与MAC地址
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip 、获取本地主机的名字
- 【转载】linux获取mac地址
- linux c获取mac地址
- linux下程序设计-获取本机MAC地址
- 获取linux系统电脑网卡mac地址
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- Linux 接口地址的获取-暨获取本地IP地址(所有地址,包括IPv4,IPV6,MAC 地址)
- linux实用技巧:使用脚本获取活动网卡的mac地址
- Linux下如何获取MAC地址
- Linux 接口地址的获取-暨获取本地IP地址(所有地址,包括IPv4,IPV6,MAC 地址)
- Linux下java调取命令通过ip获取mac地址
- Linux下C语言获取所有网卡MAC地址的代码
- windows及Linux系统下获取IP及MAC地址的方法
- 获取linux机器的IP和mac地址
- linux下java程序获取本机MAC地址
- 在linux下获取本机MAC地址的函数
- Linux下获取MAC地址
- Linux下获取CPUID、硬盘序列号与MAC地址
- 用纯Java代码根据IP获取windows和linux的MAC物理地址