如何使用 C 获取 OS X 上所有接口的 IP 地址

Posted

技术标签:

【中文标题】如何使用 C 获取 OS X 上所有接口的 IP 地址【英文标题】:How to get IP addresses of all interfaces on OS X using C 【发布时间】:2015-12-15 06:55:49 【问题描述】:

我正在将代码从 linux 移植到 OS X,但出现这些错误:

src/proxy_linux.c:784: error: 'SIOCGIFHWADDR' undeclared (first use in this function)
src/proxy_linux.c:784: error: (Each undeclared identifier is reported only once
src/proxy_linux.c:784: error: for each function it appears in.)
src/proxy_linux.c:788: error: 'struct ifreq' has no member named 'ifr_hwaddr'

我使用 Mac OS X 10.7.5 (11G63) ) 作为开发系统。

SIOCGIFHWADDR 在 OS X 上不受支持,我找不到任何可以列出所有接口的 IP 地址和 MAC 地址的可靠来源。我在苹果开发者网站上找到的唯一一个使用“IOKit”,它也不向后兼容。在这方面的任何帮助将不胜感激

【问题讨论】:

为什么不使用arp 进行mac-ip 检索? @hacks 我猜你在谈论 linux 命令,但我想要一些关于语句/函数调用序列的提示,通过这些我可以检索与 ip addr 相关的信息以及所有 C 中的所有信息 你需要在你的mac上安装arp包。我在我的mac上使用它。安装macport,然后通过它进行arp。 【参考方案1】:

如果不涉及 Sandbox 或 App Store,您可以自己解析 ifconfig -a 的输出并提取地址。如果是这样,那么您就很倒霉了,因为出于隐私原因,Apple 不允许这样做。

【讨论】:

以上是关于如何使用 C 获取 OS X 上所有接口的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Mac OS X 上使用 C + libusb 声明 USB 接口

如何在 OS X 上获取 USB 驱动器的硬盘驱动器序列号?

如何知道 C 中接口的 IP 地址?

可以配置 OS X *** 以在 *** 和本地接口之间拆分流量吗? [关闭]

#yyds干货盘点# 如何优雅的获取 Mac OS 系统 IP 地址?

如何优雅的获取 Mac OS 系统 IP 地址?