8

我正在尝试将 MacOSX 应用程序移植到 Windows,但遇到了有关 getifaddrs 的问题。基本上windows不支持它。我试图找到一种重新实现它的方法(对于 AF_INET 和 AF_INET6),但 Windows 上的“等效”功能似乎与 MacOSX 支持完全不同。

以前有人做过这种转换吗?如果是这样,有没有一种好方法可以让 Windows 像 MacOSX 一样向我报告界面信息?

4

4 回答 4

12

Windows 上最接近的函数是GetAdaptersInfoGetAdaptersAddresses。MSDN 文档非常全面,因此您应该找到所需的一切。

于 2010-06-18T14:04:52.497 回答
6

getifaddrs()不是一个可移植的解决方案,所以如果你需要支持多个平台,你应该考虑使用getaddrinfoPOSIX 和 Windows 友好的。乍一看有点复杂,但实际上并没有那么糟糕。这个 SO question有一些关于该主题的很好的答案和链接。(特别是,Beej 页面showip.c上的示例非常有帮助,这里是一个 Windows 示例;请注意,它顶部缺少一个,并确保链接到.)#include <stdio.h>Ws2_32.lib

于 2014-03-21T14:30:55.153 回答
3

我已经在这里完成了,包括 Wine 的单独版本,因为与 IP 版本无关的例程当前无法按预期工作

http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/getifaddrs.c

LGPL 2.1 许可证

编辑: Wine 1.3 修复了 IPv4 和 IPv6 友好 API 遇到的问题。

于 2010-07-31T04:08:34.197 回答
1

也许libpcap的win32端口可以帮助你?

(或 libnet 的端口,如果存在)

于 2010-06-18T11:18:03.000 回答