<sys/ioctl.h>
int ioctl(int d, int request, ...);
详细描述:见man ioctl
应用举例:
1.取得IP地址
int sockfd;
struct ifreq ifr;
char ip[128];
char mask[128];
char baddr[128];
struct sockaddr_in *saddr;
if((sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
return -1;
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, "eth0");
ifr.ifr_addr.sa_family = AF_INET;
if(ioctl(sockfd, SIOCGIFADDR, &fir)<0)
return -1;
saddr = (struct sockaddr_in*)&ifr.ifr_addr;
strcpy(ip, inet_ntoa(saddr->sin_addr));
2.取得mask
strcpy(ifr.ifr_name, "eth0");
ifr.ifr_addr.sa_family = AF_INET;
if(ioctl(sockfd, SIOCGIFNETMASK, &fir)<0)
return -1;
saddr = (struct sockaddr_in*)&ifr.ifr_addr;
strcpy(mask, inet_ntoa(saddr->sin_addr));
3.取得broadcast address
strcpy(ifr.ifr_name, "eth0");
ifr.ifr_addr.sa_family = AF_INET;
if(ioctl(sockfd, SIOCGIFBRDADDR, &fir)<0)
return -1;
saddr = (struct sockaddr_in*)&ifr.ifr_addr;
strcpy(baddr, inet_ntoa(saddr->sin_addr));