在linux上使用C++获取物理介质类型的以太网适配器

在linux上使用C++获取物理介质类型的以太网适配器

问题描述:

我正在使用此代码获取有关以太网适配器的一些信息。在linux上使用C++获取物理介质类型的以太网适配器

for(i = 0; i < nInterfaces; i++) 
    { 
     struct ifreq *item = &ifr[i]; 

     if(ioctl(sck, SIOCGIFFLAGS, &ifr[i]) >= 0) 
     { 
      if (!(ifr[i].ifr_flags & IFF_LOOPBACK)) 
      { 
       printf("Name : %s\n", item->ifr_name); 
       printf("Media : %s\n", (ifr->ifr_flags)&IFF_UP ? "Up" : "Down"); 
       printf("Bandwidth : %d\n", item->ifr_bandwidth); 
      } 
     } 
    } 

如何确定adatper的媒体类型?例如无线,蓝牙,以太网(802.3)等?

PRASHANT

如果我们相信这个网站:http://linux.about.com/library/cmd/blcmdl7_netdevice.htm,再有就是所谓的IFF_PORTSEL成员ifr_flags的值是“能够选择通过ifmap媒体类型。”

+0

你能指导我一点点来得到它吗? – Prashant 2011-05-02 07:39:27