免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1163 | 回复: 0
打印 上一主题 下一主题

Linux获得本机的MAC地址 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-20 18:28 |只看该作者 |倒序浏览

               
               
                #include errno.h>
#include stdio.h>
#include sys/socket.h>
#include net/if_arp.h>
#include netinet/in.h>
#include linux/sockios.h>
#include sys/ioctl.h>
#include string.h>
#include sys/types.h>
#include unistd.h>
#include sys/ioctl.h>
#include net/if.h>
int GetMac(const char *,unsigned char *);
int GetMac(const char *ifname,unsigned char *mac)
  {
    int sock,ret;
    struct ifreq ifr;
    sock = socket(AF_INET,SOCK_STREAM,0);
    if(sock0)
    {
      perror("socket error!\n");
      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 error!\n");
    }
  close(sock);
    return ret;
  }
int main(int argc,char *argv[])
{int ret;
  char ifname[IFNAMSIZ];
  unsigned char mac[6];
  if(argc ==1)
  {
    strcpy(ifname,"eth1");//根据自己系统的不同,名字会有所不同,可是使用ifconfig,命令测试
  }
  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;  
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104447/showart_2155192.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP