Получение IP-адреса локального компьютера на основе имени компьютера с помощью Win32 Network API - PullRequest
0 голосов
/ 12 января 2011

Я искал http://www.codeproject.com/KB/cs/network.aspx (Как получить IP-адрес компьютера), и там упоминается, что "В Win32 API это можно сделать с помощью NetWork API."

Я хочу использовать этот API на C ++, чтобы найти IP-адрес машины. У меня есть имя локального компьютера в сети. Я попытался найти его в MSDN, но нашел только API «Управление сетью», и у него, похоже, нет нужных мне функций. Я предполагаю, что мог бы использовать Win Socks, чтобы понять это, но мне кажется, что для чего-то, что должно быть простым, требуется большой объем работы.

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Следует упомянуть, что я говорю о локальном IP-адресе, а не внешний.

Ответы [ 2 ]

3 голосов
/ 12 января 2011

вы можете использовать функцию gethostbyname

проверить этот образец

#include <netdb.h>
#include <arpa/inet.h>
#include <iostream>

int main()
{
  const char* const host = "thecomputername" ;
  const hostent* host_info = 0 ;
  host_info = gethostbyname(host) ;

  if(host_info)
  {
    std::cout << "host: " << host_info->h_name << '\n' ;

    for( int i=0 ; host_info->h_addr_list[i] ; ++i )
    {
      const in_addr* address = (in_addr*)host_info->h_addr_list[i] ;
      std::cout << " address: " << inet_ntoa( *address ) << '\n' ;
    }
  }
  else herror( "error" ) ;
}
1 голос
/ 12 января 2011

Вы можете сделать это локально, используя GetAdapterAddresses в IP Helper API .

Функция GetAdaptersAddresses извлекает адреса, связанные с адаптерами на локальномкомпьютер.

...