当前位置: 首页 > 面试题库 >

仅使用proc获取本地网络接口地址?

云星波
2023-03-14
问题内容

如何仅使用
proc
获得所有网络接口的(IPv4)地址?
经过广泛的调查,我发现了以下内容:

  1. ifconfig使用SIOCGIFADDR,需要打开套接字并充分了解所有接口名称。在Linux上的任何手册页中也没有记录。
  2. proc包含/proc/net/dev,但这是接口统计信息的列表。
  3. proc包含/proc/net/if_inet6,这正是我需要的,但需要IPv6。
  4. 通常,在中很容易找到接口proc,但是很少使用实际地址,除非在某些连接中有明确的一部分。
  5. 有一个名为的系统调用getifaddrs,这是Windows所期望的非常“神奇”的功能。它还在BSD上实现。但是,它不是非常面向文本的,因此很难在非C语言中使用。

问题答案:

没有/ proc / net / if_inet6的IPv4类似物

ifconfig可以:

fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP)
ioctl(fd, SIOCGIFCONF, ...)

您将获得如下内容:

ioctl(4, SIOCGIFCONF, {120, {{"lo", {AF_INET, inet_addr("127.0.0.1")}}, {"eth0", {AF_INET, inet_addr("10.6.23.69")}}, {"tun0", {AF_INET, inet_addr("10.253.10.151")}}}})


 类似资料:
  • 我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。

  • 问题内容: 看来android的java.net.NetworkInterface实现没有 byte [] getHardwareAddress()方法 http://developer.android.com/reference/java/net/NetworkInterface.html 我发现有几个论坛的人都试图这样做,但没有明确的答案,我需要获得一个跨设备的UUID,所以我不能依赖电话号码

  • 问题内容: 在Linux上,如何使用python查找本地IP地址/接口的默认网关? 我看到了“如何获取UPnP的内部IP,外部IP和默认网关”的问题,但是公认的解决方案仅显示了如何获取Windows网络接口的本地IP地址。 谢谢。 问题答案: 对于那些不想额外依赖并且不喜欢调用子流程的人,可以通过直接阅读以下内容来自己做: 我没有要测试的大端字节序计算机,因此我不确定字节序是否取决于您的处理器体系

  • 我检查了下面的代码以获取ipv6地址,这段代码返回了全局单播地址,比如“2001:x:x…”。但我想获得链接本地地址,比如“fe80:…”。如何使用以下代码获取链接本地地址?

  • 我的第一篇文章,所以请温柔一点;)我必须修改一些现有的专注于java.net.网络接口的软件。以前所有的接口都列在一个组合框中,用户必须选择一个。现在不仅可以选择接口,还可以选择这个接口附带的一个特定的ip地址。由于许多代码都是基于网络接口类的,我在想是否有可能通过将现有网络接口拆分为ip地址来“创建”一些新的网络接口。这可能吗?我知道,我不能创建一个新的网络接口。但是也许还有另一个选择,我现在看

  • 问题内容: 有没有办法使用libpcap在Linux中获取接口的IP地址? 我发现了这个, 获取Linux上一个接口的IP地址,但这不使用pcap。 此外,在PCAP例子是说,像这应该得到你的IP,但它给你的网络地址。 问题答案: 使用功能: 输出: