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?
Die nächsten Funktionen unter Windows sind GetAdaptersInfo und GetAdaptersAddresses . Die MSDN-Dokumentation ist ziemlich umfassend, Sie sollten also alles finden, was Sie brauchen.
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.)
Tags und Links c++ macos windows-xp ipv6 ipv4