int getMac(char* mac){
int sockfd;
struct ifreq tmp;
char macAddr[30];
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
cout<<"create socket fail"<<endl;
return -1;
}
memset(&tmp,0,sizeof(struct ifreq));
strncpy(tmp.ifr_name,"eth0",sizeof(tmp.ifr_name)-1);
if((ioctl(sockfd,SIOCGIFHWADDR,&tmp))<0){
cout<<"mac ioctl error"<<endl;
return -1;
}
sprintf(macAddr,"%02x%02x%02x%02x%02x%02x",
(unsigned char)tmp.ifr_hwaddr.sa_data[0],
(unsigned char)tmp.ifr_hwaddr.sa_data[1],
(unsigned char)tmp.ifr_hwaddr.sa_data[2],
(unsigned char)tmp.ifr_hwaddr.sa_data[3],
(unsigned char)tmp.ifr_hwaddr.sa_data[4],
(unsigned char)tmp.ifr_hwaddr.sa_data[5]
);
close(sockfd);
memcpy(mac,macAddr,strlen(macAddr));
return 0;
}