- 论坛徽章:
- 0
|
本想利用 ioctl 获取MAC地址,利用printf打印出MAC地址,逐个字节打印,结果第四个字节的数据打印出4字节,如图,这个怎么解释呢
- int main()
- {
- int sockfd,fd;
- struct ifreq tmp;
- bzero(&tmp,sizeof(tmp));
- struct sockaddr *addr=&tmp.ifr_addr;
- sockfd = socket(AF_INET,SOCK_DGRAM,0);
- if(sockfd < 0)
- return 0;
- strcpy(tmp.ifr_name,"ens33");
- fd=ioctl(sockfd,SIOCGIFHWADDR,&tmp);
-
- /*printf("\r\n get sockfd=%d, len:%d %02x:%02x:%02x:%02x:%02x:%02x\r\n",
- sockfd,addr->sa_family,addr->sa_data[0],addr->sa_data[1],addr->sa_data[2],addr->sa_data[3],addr->sa_data[4],addr->sa_data[5]);*/
- printf("\n\r%02x:%02x:%02x:%02x:%02x:%02x\n\r",tmp.ifr_netmask.sa_data[0],tmp.ifr_netmask.sa_data[1],tmp.ifr_netmask.sa_data[2],tmp.ifr_netmask.sa_data[3],
- tmp.ifr_netmask.sa_data[4],tmp.ifr_netmask.sa_data[5]);
- return 0;
- }
复制代码 两种打印形式得到的打印结果都如下图
|
|