将getifaddrs移植到Win XP

时间:2010-06-18 11:08:15

标签: c++ macos windows-xp ipv6 ipv4

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

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

4 个答案:

答案 0 :(得分:12)

Windows上最接近的功能是GetAdaptersInfoGetAdaptersAddresses。 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端口,如果存在)