1. #define MAX_INTERFACE 64
  2.  
  3. int showifs()
  4. {
  5. int i;
  6. int rc;
  7. int sock;
  8. int ifnum;
  9. struct ifreq ifr[MAX_INTERFACE];
  10. // struct arpreq arp;
  11. struct ifconf ifc;
  12.  
  13. sock = socket ( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
  14. if ( sock == - )
  15. {
  16. return -;
  17. }
  18.  
  19. ifc.ifc_len = sizeof( ifr );
  20. ifc.ifc_buf = ( caddr_t ) ifr;
  21. rc = ioctl ( sock, SIOCGIFCONF, &ifc );
  22. if ( rc == - )
  23. {
  24. close( sock );
  25. return -;
  26. }
  27.  
  28. ifnum = ifc.ifc_len / sizeof ( struct ifreq );
  29. fprintf( stdout, "ifnum=[%d]\n======================================\n", ifnum );
  30. for ( i = ; i < ifnum; i ++ )
  31. {
  32. fprintf( stdout, "ifname [%s]\n", ifr[i].ifr_name );
  33.  
  34. //status
  35. rc = ioctl( sock, SIOCGIFFLAGS, ifr + i );
  36. if ( rc != - )
  37. {
  38. if ( ifr[i].ifr_flags & IFF_PROMISC )
  39. {
  40. fprintf( stdout, "PROMISC=TRUE\n" );
  41. }
  42. else
  43. {
  44. fprintf( stdout, "PROMISC=FALSE\n" );
  45. }
  46.  
  47. if ( ifr[i].ifr_flags & IFF_UP )
  48. {
  49. fprintf( stdout, "UP=TRUE\n" );
  50. }
  51. else
  52. {
  53. fprintf( stdout, "UP=FALSE\n" );
  54. }
  55. }
  56.  
  57. //ip
  58. rc = ioctl ( sock, SIOCGIFADDR, ifr + i );
  59. if ( rc != - )
  60. {
  61. fprintf( stdout, "IP=%s\n", inet_ntoa( ( ( struct sockaddr_in* )( &ifr[i].ifr_addr ) )->sin_addr ) );
  62. }
  63.  
  64. //netmask
  65. rc = ioctl ( sock, SIOCGIFNETMASK, ifr + i );
  66. if ( rc != - )
  67. {
  68. fprintf( stdout, "NETMASK=%s\n", inet_ntoa( ( ( struct sockaddr_in* )( &ifr[i].ifr_netmask ) )->sin_addr ) );
  69. }
  70.  
  71. //broadcast
  72. rc = ioctl ( sock, SIOCGIFBRDADDR, ifr + i );
  73. if ( rc != - )
  74. {
  75. fprintf( stdout, "BROADCAST=%s\n", inet_ntoa( ( ( struct sockaddr_in* )( &ifr[i].ifr_broadaddr ) )->sin_addr ) );
  76. }
  77.  
  78. //mac
  79. rc = ioctl ( sock, SIOCGIFHWADDR, ifr + i );
  80. if ( rc != - )
  81. {
  82. fprintf( stdout, "%02x:%02x:%02x:%02x:%02x:%02x\n",
  83. ( unsigned char )ifr[i].ifr_hwaddr.sa_data[],
  84. ( unsigned char )ifr[i].ifr_hwaddr.sa_data[],
  85. ( unsigned char )ifr[i].ifr_hwaddr.sa_data[],
  86. ( unsigned char )ifr[i].ifr_hwaddr.sa_data[],
  87. ( unsigned char )ifr[i].ifr_hwaddr.sa_data[],
  88. ( unsigned char )ifr[i].ifr_hwaddr.sa_data[] );
  89. }
  90. }
  91.  
  92. close( sock );
  93. return ;
  94. }

linux获得网卡信息的更多相关文章

  1. 查看Linux系统网卡信息

    nmcli是一款能够方便我们配置网络的工具,能够轻松的查看网卡信息或网络状态: 实例1:查看网卡信息 [root@localhost ~]# nmcli connection show 名称 UUID ...

  2. linux 获取网卡信息

    sar -n DEV 2 10:41:37 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s10:41:39 AM eth ...

  3. VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程

    VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...

  4. vmware workstation下的虚拟Linux通过NAT模式共享上网

    在vmware workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境不同,也懒得去总是配置Linux的网卡信息,所以,设置为NAT模式来共享真机的上网网卡来 ...

  5. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux:Linux初级,也就是入门linux前提是需要有一些计算机硬件相关的知识或是有一下 ...

  6. Linux 查看CPU、内存、机器型号等硬件信息

    # 查看CPU信息 #查看CPU信息(型号) [root@localhost ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 32 ...

  7. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  8. paramiko获取主机信息

    import re import paramiko host="192.168.4.88" user = "root" password = " cl ...

  9. liunx常用知识基本命令大全

    liunx基础命令使用 标签(空格分隔):liunx常用命令 网络配置 虚拟网卡的绝对路径 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ...

随机推荐

  1. [Unity 设计模式]IOC依赖倒置

    1.前言 最近在看<游戏开发与设计模式>一书,看到控制反转设计模式,作者说:上层模块不应该依赖于下层模块,上层模块和下层模块都应该依赖于接口,这样能减少耦合.然后附带举了个例子,我觉得特别 ...

  2. B1277 [HNOI2002]Tinux系统 树形dp

    这个题bzoj上没有图,luogu上样例有问题...其实这个题代码不难,但是思考起来还是有一定难度的,其实这些题的重点都在于思考.我就不写了,洛谷上唯一的题解写的挺好,大家可以看一看. 题干: 在do ...

  3. 8.3 TCPIP协议族

    接下来我们要学习的内容是TCP/IP协议族.TCP/IP协议族在网络系统中是非常重要的.这一个协议族当中牵涉到许许多多的我们平常所用到的协议.TCP/IP呢它也有分层模型.然后我们讲到的就是三方面的内 ...

  4. codevs2503失恋28天......(背包dp)

    503 失恋28天-缝补礼物  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold   题目描述 Description 话说上回他给女孩送了n件礼物,由于是廉价的所以 ...

  5. [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. Akka源码分析-Remote-网络链接生命周期

    remote模式下,网络链接的生命周期往往影响着对应Actor的生命周期,那么网络链接的生命周期是怎么样的呢? 每一个与远程系统的链路都是四个状态之一:空闲.活跃.被守护.被隔离.远程系统的某个地址没 ...

  7. c/c++ 参数传递 - 数组

    对于函数参数中的数组类型:传递的是数组地址,可以理解成传递的是对数组的引用.不是值传递,这是由C/C++函数实现机制决定的.一下三种函数生命完全等价: void func(int array[10]) ...

  8. 元组Tuple、数组Array、映射Map

    一.元组Tuple 元组Tuple是不同类型的值的聚集,元组的值将单个的值包含在圆括号中来构成,元组可以包含一个不同类型的元素 如 val riple = (100, "Scala" ...

  9. Linq学习(零)-错误汇总

    问题一: Cannot execute text selection: CS0009 Metadata file 'C:\Users\Kimisme\Documents\LINQPad Plugins ...

  10. MVC系列学习(八)-分布视图

    1.本次学习实例 1.1.建议:为了尽可能让项目简单,就新建一个空的mvc项目,同时添加任何视图不用模板页 1.2注意:在添加LoginPart的分部视图时,要记得沟一个沟 2.项目代码,如下 总共三 ...