Использование Windows API для определения IP-адресов для сетевых карт и сетевых устройств - PullRequest
0 голосов
/ 26 июля 2011

Я хотел бы написать приложение для определения IP-адресов всех сетевых подключений в компьютерной системе Windows, а также IP-адресов всех Ethernet-устройств, подключенных к этой системе. Есть ли простой способ сделать это программно с помощью Windows API?

Я ищу C ++, эквивалентный ответу на этот вопрос:
Как проверить подключение к сети?
а также как перечислять подключенные Ethernet-устройства.

Мне известно о сетевом руководстве Биджа, и я (медленно) пробираюсь через него, но я подумал, что если есть более быстрый и простой способ, это было бы здорово. Я искал по всему StackOverflow без особой удачи.

Если у кого-нибудь есть какой-либо совет или он может указать мне полезное руководство, это было бы замечательно!

Спасибо!

- R

Ответы [ 2 ]

3 голосов
/ 26 июля 2011

GetAdaptersInfo : получает информацию об адаптере для локального компьютера.

DWORD GetAdaptersInfo(
  __out    PIP_ADAPTER_INFO pAdapterInfo,
  __inout  PULONG pOutBufLen
);

MSDN для GetAdaptersInfo .

0 голосов
/ 26 июля 2011

Чтобы получить все IP-адреса вашего компьютера, используйте следующий код

char chHostName[MAX_PATH];
if (gethostname(chHostName, sizeof(chHostName)) == SOCKET_ERROR)
{
    return "0.0.0.0";
}
struct addrinfo hints;
struct addrinfo *result = NULL;

// Setup the hints address info structure
// which is passed to the getaddrinfo() function
ZeroMemory( &hints, sizeof(hints) );
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;

dwRetval = getaddrinfo(chHostName, NULL, &hints, &result);



for(ptr=result; ptr != NULL ;ptr=ptr->ai_next) 
{
//Parse the address
}
...