我正在尝试将MacOSX应用移植到Windows,我遇到了getifaddrs的问题。基本上Windows不支持它。我试图找到一种方法来重新实现它(对于AF_INET和AF_INET6),但Windows上的“等效”功能似乎与MacOSX支持完全不同。
之前有人做过这种转换吗?如果是这样,有一个很好的方法我可以让Windows报告像MacOSX那样的界面信息吗?
答案 0 :(得分:12)
Windows上最接近的功能是GetAdaptersInfo和GetAdaptersAddresses。 MSDN文档非常全面,因此您应该找到所需的一切。
答案 1 :(得分:6)
getifaddrs()
不是便携式解决方案,因此如果您需要支持多个平台,则应考虑使用POSIX和Windows友好的getaddrinfo
。初看起来有点复杂,但实际上并不是那么糟糕。 This SO question对该主题有一些很好的答案和链接。 (特别是Beej's page上的showip.c
示例非常有用,here是一个Windows示例;请注意它顶部缺少#include <stdio.h>
,并确保链接Ws2_32.lib
。)
答案 2 :(得分:3)
我在这里完成了,包括Wine的单独版本,因为IP版本不可知的例程当前没有按预期工作,
http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/getifaddrs.c
LGPL 2.1许可证
编辑: Wine 1.3修复了IPv4&amp; IPv6友好的API。
答案 3 :(得分:1)
也许libpcap的win32端口可以帮到你?
(或libnet端口,如果存在)