请问在UNIX取MAC地址的问题,TRU64

lifeforu 2005-01-14 10:59:01
#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版本不同是不是代码都得改?

期待高手给出完美解决方案
(包括用户权限问题,因为不可能要求用户以超级用户权限去操作)
...全文
277 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gettext 2005-01-15
  • 打赏
  • 举报
回复
try:
struct ifreq ifr;
if (ioctl (sock, SIOCGIFNAME, &ifr) < 0)
{
return -errno;
}
printf("interface name is %s\n", ifr.ifr_name);
gettext 2005-01-14
  • 打赏
  • 举报
回复
/proc/下面应该可以查到interface的名称。
lirun 2005-01-14
  • 打赏
  • 举报
回复
你机器里没有装网卡。你的ifconfig只有闭环的地址,没有eth0的设置。。
lifeforu 2005-01-14
  • 打赏
  • 举报
回复
为什么这样的问题总是冷冷清清的呢?搜索了一阵子,发现这个问题问的人挺多的,要是有一个完美的方法就好了
lifeforu 2005-01-14
  • 打赏
  • 举报
回复
# cd /proc
# ls
00000 00202 00582 00617 00765 00842 00965 01065 01623 02908
00001 00203 00597 00725 00768 00864 00966 01066 01731 02979
00003 00308 00609 00742 00778 00880 01017 01268 01737 02980
00005 00312 00610 00743 00779 00935 01030 01269 01738 02989
00053 00382 00614 00745 00790 00961 01056 01617 01739
00168 00385 00615 00763 00831 00963 01057 01618 02907

//////////////////////tru64 5.1

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧