Портирование getifaddrs на Win XP - PullRequest
7 голосов
/ 18 июня 2010

Я пытаюсь перенести приложение MacOSX на Windows, и у меня возникла проблема с getifaddrs. В основном Windows не поддерживает это. Я пытаюсь найти способ переоснащить его (для AF_INET и AF_INET6), но «эквивалентная» функциональность в окнах не похожа на поддержку MacOSX.

Кто-то делал такое преобразование раньше? Если так, есть ли хороший способ, чтобы я мог получить окна, чтобы сообщить мне информацию об интерфейсе, как MacOSX?

Ответы [ 4 ]

12 голосов
/ 18 июня 2010

Ближайшими функциями в Windows являются GetAdaptersInfo и GetAdaptersAddresses . Документация MSDN довольно обширна, поэтому вы должны найти все, что вам нужно.

6 голосов
/ 21 марта 2014

getifaddrs() не является переносимым решением, поэтому, если вам требуется поддержка нескольких платформ, вам следует рассмотреть возможность использования getaddrinfo, который совместим с POSIX и Windows.На первый взгляд все немного сложнее, но на самом деле все не так плохо. Этот ТАК вопрос имеет несколько хороших ответов и ссылок по теме.(В частности, пример showip.c на странице Биджа весьма полезен, а здесь - это пример Windows; обратите внимание, что в нем отсутствует #include <stdio.h> вверху, иОбязательно связывайте с Ws2_32.lib.)

3 голосов
/ 31 июля 2010

Я сделал это здесь, , включая отдельную версию для Wine, так как подпрограммы, не зависящие от версии IP, не работают должным образом ,

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

Лицензия LGPL 2.1

edit: Wine 1.3 устраняет проблемы, возникающие при использовании дружественного IPv4 и IPv6 API.

1 голос
/ 18 июня 2010

может ли win32 порт libpcap вам помочь?

(или порт libnet, если таковой существует)

...