Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Узнать MAC адрес


Автор: Rickert 5.6.2007, 09:03
Альт Линукс.
Как можно получить mac адрес сетевой карты без посторонних либ?

Добавлено через 8 минут и 56 секунд
Нашёл на rsdn'е модный пример:
Код

...
char szMac[18];
FILE* f = popen("/sbin/ifconfig |grep eth0|awk '{print $5}'", "r");
size_t nRead = fread( szMac, 1, sizeof(szMac)-1, f);
szMac[nRead] = '\0';
printf("%s", szMac);
pclose(f);
...

solved smile 

Автор: BlackStar 5.6.2007, 10:53
Еще один способ:
Код

#include <stdio.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <string.h>
#include <linux/if.h>

int main(int ac, char *av[]){

    int fd;
    struct ifreq ifr;
    unsigned char mac[6];
    
    fd = socket(AF_INET,SOCK_DGRAM,0);
    memset(&ifr,0,sizeof(struct ifreq));
    memcpy(ifr.ifr_name,"eth0",4);
    ioctl(fd,SIOCGIFHWADDR,&ifr);
    memcpy(mac,(char *)&(ifr.ifr_hwaddr.sa_data),sizeof(struct sockaddr));
    
    printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
    
    return 0; 

}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)