Portierung von getifaddrs zu Win XP

7

Ich versuche, eine MacOSX-App auf Windows zu portieren, und ich bin auf ein Problem mit getiaddrs gestoßen. Grundsätzlich unterstützt Windows es nicht. Ich versuche, einen Weg zu finden, es wieder zu implementieren (für AF_INET und AF_INET6), aber die "äquivalente" Funktionalität unter Windows scheint nichts mit der MacOSX-Unterstützung zu tun.

Hat jemand diese Art der Konvertierung schon einmal gemacht? Wenn ja, gibt es eine nette Möglichkeit, Fenster zu bekommen, um mir Interface-Informationen wie MacOSX zu melden?

    
Goz 18.06.2010, 11:08
quelle

4 Antworten

12

Die nächsten Funktionen unter Windows sind GetAdaptersInfo und GetAdaptersAddresses . Die MSDN-Dokumentation ist ziemlich umfassend, Sie sollten also alles finden, was Sie brauchen.

    
Laurent Etiemble 18.06.2010, 14:04
quelle
5

getifaddrs() ist keine portable Lösung. Wenn Sie also mehrere Plattformen unterstützen müssen, sollten Sie in Betracht ziehen, getaddrinfo zu verwenden, was POSIX- und Windows-freundlich ist. Es ist ein wenig komplizierter auf den ersten Blick, aber es ist wirklich nicht so schlimm. Diese SO-Frage enthält einige gute Antworten und Links zum Thema. (Besonders das showip.c Beispiel auf Beejs Seite ist ziemlich hilfreich, und hier ist ein Windows-Beispiel, beachten Sie, dass ein #include <stdio.h> bei der top, und stellen Sie sicher, dass Sie mit Ws2_32.lib verlinken.)

    
patrickvacek 21.03.2014 14:30
quelle
3

Ich habe es hier gemacht, einschließlich einer separaten Version für Wine, da die agnostischen Routinen der IP-Version nicht wie erwartet funktionieren ,

Ссылка

LGPL 2.1 Lizenz

edit: Wine 1.3 behebt die Probleme mit dem IPv4 & amp; IPv6-freundliche API.

    
Steve-o 31.07.2010 04:08
quelle
1

vielleicht win32 Port von libpcap kann Ihnen helfen?

(oder Port von libnet, falls einer existiert)

    
zed_0xff 18.06.2010 11:18
quelle

Tags und Links