请问在UNIX取MAC地址的问题,TRU64
#define ETH_NAME "eth0"
GetLocalAddress(char* szIPAddr)
{
int sock;
struct sockaddr_in sin;
struct sockaddr sa;
struct ifreq ifr;
unsigned char mac[6];
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock == -1)
{
perror("Error: get local IP socket fail!");
return false;
}
strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0;
if (ioctl(sock, SIOCGIFADDR, &ifr) < 0)
{
perror("Error: get local IP ioctl fail!");
return false;
}
memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
sprintf(szIPAddr, "%s",inet_ntoa(sin.sin_addr));
return true;
}
这是在论坛里查找一段代码,在执行的时候发现
ioctl(sock, SIOCGIFADDR, &ifr)
出错:Error: get local IP ioctl fail!: No such device or address
应该如何处理?
# ifconfig -a
lo0: flags=100c89<UP,LOOPBACK,NOARP,MULTICAST,SIMPLEX,NOCHECKSUM>
inet 127.0.0.1 netmask ff000000 ipmtu 4096
sl0: flags=10<POINTOPOINT>
tu0: flags=c63<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,SIMPLEX>
tu1: flags=c63<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,SIMPLEX>
inet 192.168.1.64 netmask ffffff00 broadcast 192.168.1.255 ipmtu 1500
tun0: flags=80<NOARP>
还有问题就是各个UNIX版本不同是不是代码都得改?
期待高手给出完美解决方案
(包括用户权限问题,因为不可能要求用户以超级用户权限去操作)