获取电脑mac地址

获取电脑mac地址

#include <iostream>
#include <ifaddrs.h>
#include <sys/socket.h>
#include <net/if_dl.h>

void getMacAddress(char *mac, const char *name = "en0"){
    
    struct ifaddrs * iflist = NULL;
    if(getifaddrs(&iflist) == 0){
        for(struct ifaddrs *cur = iflist; cur; cur = cur->ifa_next){
            if((cur->ifa_addr->sa_family == AF_LINK) && !strcmp(cur->ifa_name,name)){
                sockaddr_dl *sdl = (sockaddr_dl *)cur->ifa_addr;
                sprintf(mac,"%02X:%02X:%02X:%02X:%02X:%02X",(unsigned char)LLADDR(sdl)[0],(unsigned char)LLADDR(sdl)[1],
                        (unsigned char)LLADDR(sdl)[2],(unsigned char)LLADDR(sdl)[3],(unsigned char)LLADDR(sdl)[4],
                        (unsigned char)LLADDR(sdl)[5]);
            }
        }
    }
    if (iflist) {
        freeifaddrs(iflist);
        iflist = NULL;
    }
}

char macAddress[20];

int main(int argc, const char * argv[]) {
    
    getMacAddress(macAddress);
    printf("%s\n", macAddress);
    getMacAddress(macAddress, "en1");
    printf("%s\n", macAddress);
    return 0;
}

AC:87:A3...
60:F8:1D...

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容