- 论坛徽章:
- 0
|
不曉得醬有沒有問題...
請多指教囉~
int GetIP(void)
{
int sockfd;
struct sockaddr_in *addr;
struct ifreq if_info;
char buff[INET_ADDRSTRLEN];
//----ip
sockfd =socket(AF_INET, SOCK_DGRAM, 0);
strcpy(if_info.ifr_name, "eth0" ;
ioctl(sockfd, SIOCGIFADDR, &if_info);
addr = (struct sockaddr_in *)&if_info.ifr_addr;
inet_ntop(AF_INET,&addr->;sin_addr,buff,sizeof(buff)) ;
close(sockfd);
printf("GetIP=%x=%s\n",addr->;sin_addr,buff);
//----mac
sockfd =socket(AF_INET, SOCK_DGRAM, 0);
strcpy(if_info.ifr_name, "eth0" ;
ioctl(sockfd, SIOCGIFHWADDR, &if_info);
memcpy(buff, if_info.ifr_hwaddr.sa_data, 6);
close(sockfd);
printf("MAC=%02X,%02X,%02X,%02X,%02X,%02X\n",buff[0],buff[1],buff[2],buff[3],buff[4],buff[5]);
printf("GetMac=%s\n",ether_ntoa((struct ether_addr *)buff));
//----mask
sockfd =socket(AF_INET, SOCK_DGRAM, 0);
strcpy(if_info.ifr_name, "eth0" ;
ioctl(sockfd, SIOCGIFNETMASK, &if_info);
addr = (struct sockaddr_in *)&if_info.ifr_netmask;
inet_ntop(AF_INET,&addr->;sin_addr,buff,sizeof(buff)) ;
close(sockfd);
printf("GetMask=%x=%s\n",addr->;sin_addr,buff);
//----broadaddr
sockfd =socket(AF_INET, SOCK_DGRAM, 0);
strcpy(if_info.ifr_name, "eth0" ;
ioctl(sockfd, SIOCGIFBRDADDR, &if_info);
addr = (struct sockaddr_in *)&if_info.ifr_broadaddr;
inet_ntop(AF_INET,&addr->;sin_addr,buff,sizeof(buff)) ;
close(sockfd);
printf("GetBcast=%x=%s\n",addr->;sin_addr,buff);
return 0;
} |
|