- 论坛徽章:
- 0
|
以下是我写的代码 编译通过了
输出 -1 即 ioctl返回错误 当然mac也是不对的 问题是 为什么会返回-1 请高手帮帮忙 谢谢了!!!!
int main()
{
int sd;
int ret;
unsigned char* mac;
struct ifreq ifr;
memset(&ifr , 0 , sizeof(ifr));
if(sd = socket(AF_INET , SOCK_STREAM , 0) < 0)
{
printf("socket fail\n");
return 0;
}
strcpy(ifr.ifr_name , "eth0");
ifr.ifr_addr.sa_family = AF_INET;
ret = ioctl(sd, SIOCGIFHWADDR, &ifr , sizeof(ifr));
close(sd);
printf("%d\n" , ret);
if(0 == ret)
{
mac = ifr.ifr_hwaddr.sa_data;
}
else
{
perror("ioctl");
}
printf("%2x:%2x:%2x:%2x:%2x:%2x\n" , mac[0] , mac[1], mac[2], mac[3], mac[4], mac[5]);
return 0;
} |
|