• 全部
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux
  • 问答

请问在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版本不同是不是代码都得改?

期待高手给出完美解决方案
(包括用户权限问题,因为不可能要求用户以超级用户权限去操作)
...全文
208 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
发帖
Linux/Unix社区
创建于2007-08-27

2.0w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
帖子事件
创建了帖子
2005-01-14 10:59
社区公告
暂无公告