linux清mac地址,linux下获得MAC地址

看到经常有人问如何在linux中获取MAC地址,我干脆把代码贴出来,方法就是用ioctl(   SIOCGIFHWADDR   );

#include

#include

#include

#include

#include

#include

#include

intGetMac(   const   char   *ifname,   unsigned   char   *mac   )

{

intsock,   ret;

structifreqifr;

sock   =   socket(   AF_INET,   SOCK_STREAM,   0   );

if   (   sock   <   0   )   {

perror(   "socket "   );

return   -1;

}

memset(   &ifr,   0,   sizeof(ifr)   );

strcpy(   ifr.ifr_name,   ifname   );

ret   =   ioctl(   sock,   SIOCGIFHWADDR,   &ifr,   sizeof(ifr)   );

if   (   ret   ==   0   )   {

memcpy(   mac,   ifr.ifr_hwaddr.sa_data,   6   );

}   else   {

perror(   "ioctl "   );

}

close(   sock   );

return   ret;

}

intmain(   int   argc,   char   **argv   )

{

intret;

charifname[IFNAMSIZ];

unsigned   charmac[6];

if   (   argc   ==   1   )   {

strcpy(   ifname,   "eth0 "   );

}   else   {

strcpy(   ifname,   argv[1]   );

}

memset(   mac,   0,   sizeof(mac)   );

ret   =   GetMac(   ifname,   mac   );

if   (   ret   ==   0   )   {

printf(   "%s   mac   address   is:   [%02X:%02X:%02X:%02X:%02X:%02X]\n ",   ifname,   mac[0],   mac[1],   mac[2],   mac[3],   mac[4],   mac[5]   );

}   else   {

fprintf(   stderr,   "Can 't   get   %s 's   mac   address\n ",   ifname   );

}

return   0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值