文档章节

获取系统所有IP地址

 大东家
发布于 2015/01/13 10:28
字数 177
阅读 11
收藏 0

获取详细网卡信息,请参考ioctl

net/if.h 等相关文件与帮助。

 

 

struct if_nameindex * ifni, *p;
  int fd, numreqs = 30, n, err = -1;
  struct ifconf ifc;
  struct ifreq *ifr;

  if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) < 0){
    perror ("socket");
    exit (1);
  }

  ifc.ifc_buf = NULL;
  for (;;) {
    ifc.ifc_len = sizeof (struct ifreq) * numreqs;
    ifc.ifc_buf = realloc(ifc.ifc_buf, ifc.ifc_len);

    if (ioctl (fd, SIOCGIFCONF, &ifc) < 0) {
      perror ("SIOCGIFCONF");
      goto out;
    }

    if (ifc.ifc_len == sizeof (struct ifreq) *numreqs) {
    /* assume it overflowed and try again */
      numreqs += 10;
      continue;
    }
    break;
  }
  close (fd);

  //uint32_t ip; 
  int i;                                                          
  char ip_str[INET_ADDRSTRLEN];
  ifr = ifc.ifc_req;
  for (i = 0, n = 0; n < ifc.ifc_len; n += sizeof(struct ifreq), i++) {
    /*
    if (getifaddr (AF_INET, ++i, ifr->ifr_name, &ip) == -1){
      perror ("getifaddr failed");
      exit (2);
    }
    */
//ifreq结构已经有了,ip已经存放在里面了
    printf ("Index: %d,/tInterface: %s,/tIP: %s/n", i,
            ifr->ifr_name, inet_ntop (AF_INET, &((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr, ip_str, sizeof (ip_str)));
    ifr++;
  }

 out:
  free(ifc.ifc_buf);

  return 0;

本文转载自:http://blog.csdn.net/xiaohelong2005/article/details/4149615

粉丝 22
博文 255
码字总数 111936
作品 0
长沙
项目经理
私信 提问
实现远程连接 Win10的Ubuntu子系统下的MySQL数据库

实现远程连接 Win10的Ubuntu子系统下的MySQL数据库 1. Ubuntu系统下安装MySQL数据库 2. 登陆数据库,创建用于远程连接的用户 注:表示所有的电脑都可以连接,也可以设置某个ip地址运行连接。...

优惠码优惠
2018/07/03
0
0
linux系统 网络服务管理配置

7.0版本服务管理 采用了systemd的管理思想 /usr/lib/systemd/system 查看系统中所有服务的开机启动状态 如:systemctl list-unit-files grep ssh 服务的命名方式:进程名.service 配置时只需...

何焘
2017/09/11
0
0
比特币源码解读十三

我们现在通过对Appinit2的分析看到了很多比特币的核心内容,现在我们要看的是第十一步。也有非常核心的内容。我们先大概了解下这步的内容:Step 11: start node (启动节点) 节点启动 一。我们...

ttblack
2017/10/28
0
0
JS获取IP、MAC和主机名的几种方法

今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome、FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本。下面的代码是我在...

Carl_
2014/09/05
744
0
VMware虚拟机网络配置

VMware虚拟机有三种网络模式,分别是Bridged(桥接模式)、NAT(网络地址转换模式)、Host-only(主机模式)。 1、Bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台...

杰克10
2017/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

记一次项目启动报java.lang.StackOverflowError

项目是spring boot,之前没有问题,突然有一次debug方式启动的时候报这个错误。 因为其他同事没有问题,线上也没有问题,所以先排除了是代码问题。 开始以为电脑开的软件太多,然后给jvm的内存...

chro008
3分钟前
3
0
idea 2019.2免费激活码

亲测有效到2020.6 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb......

Iverson58
10分钟前
3
0
移动APP开发中的重要注意事项

您的移动app在变化吗?如果没有,请确保遵循这些提示进行移动app开发。大多数行业的IT领导者都优先考虑劳动力和消费者的移动性。实现成功的移动app开发具有挑战性,涉及在app功能开发的基础上...

a429011717
17分钟前
4
0
Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
36分钟前
9
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
52分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部