扫盲问题:如何编程获得linux 下本机所有端口mac地址
除此之外,对linux某个端口的link状态的lastchange 如何编程取得。
问题点数:50、回复次数:3Top
1 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2006-03-02 09:34:23 得分 0
int fd, intrface;
struct ifreq buf[16];
struct ifconf ifc;
if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0)
{
ifc.ifc_len = sizeof buf;
ifc.ifc_buf = (caddr_t) buf;
if (!ioctl (fd, SIOCGIFCONF, (char *) &ifc))
{
intrface = ifc.ifc_len / sizeof (struct ifreq);
while (intrface-- > 0)//遍历所有网卡
{
if (!(ioctl (fd, SIOCGIFADDR, (char *) &buf[intrface])))
{
//((struct sockaddr_in*)(&buf[intrface].ifr_netmask))->sin_addr.s_addr=>IP 地址一个32位的数字
//buf[intrface].ifr_addr.sa_data => MAC地址7个字节
}
}
}
}
遍历所有网卡,OK?Top
2 楼fierygnu(va_list)回复于 2006-03-02 09:38:12 得分 0
darkstar21cn(爱上小猫的小狗)(读不懂爱情所以来读程序) 对。
楼主找UNIX Network Programming来看。Top
3 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2006-03-02 15:34:23 得分 0
惭愧,打错了 MAC地址7个字节
是6个字节才对
不好意思Top




