ifreq 是在使用ifconfig命令配置本机ip,掩码等使用的结构体,定义在/usr/include/net/if.h里 , 然后使用ioctl与内核进行通信,通信使用socket。是想获取IP等信息还是修改信息,实在ioctl的参数确定的。
int main()
{
int iSock = 0;
struct sockaddr_in sockLocalAddr;
struct ifreq ifInfo;
unsigned char buf[6];
bzero(&sockLocalAddr, sizeof(sockLocalAddr));
bzero( &ifInfo, sizeof( ifInfo));
bzero(buf, sizeof(buf));
iSock = socket(AF_INET, SOCK_DGRAM, 0);
if (-1 == iSock)
{
perror("socket:");
return E_FAIL;
}
strncpy(ifInfo.ifr_name, "eth0", 4);
ifInfo.ifr_name[4] = '\0';
if( ioctl(iSock, SIOCGIFHWADDR, &ifInfo) == 0)
{
memcpy(buf, ifInfo.ifr_hwaddr.sa_data, 6);
printf("hardwaer=%02x:%02x:%02x:%02x:%02x:%02x\n",
buf[0],buf[1],buf[2],buf[3],buf[4],buf[5]);
}
return E_OK;
}