найти IP-адрес, который подключен к InterNet в ПК - PullRequest
0 голосов
/ 26 апреля 2011

Серверный компьютер имеет более одного IP, где один IP связан с локальной сетью и Другое связано с WAN (Интернет).

Серверное приложение должно связать IP-адрес и порт, чтобы оно могло прослушивать клиента. Я могу получить All Ip на сервере, но столкнулся с проблемой при поиске активный IP, т. е. IP, подключенный к Интернету.

следующий код даст все IP в системе.

 char chHostName[MAX_PATH];

  if ( gethostname(chHostName, sizeof(chHostName)) == SOCKET_ERROR)
  {
      return ;
  }    
struct hostent *phe = gethostbyname(chHostName);

  if (phe == 0)
  {    
      return ;

  }
//struct in_addr addrLocalIP;

  for (int i = 0; phe->h_addr_list[i] != 0; ++i) 
  {

    memcpy(&m_addrLocal.sin_addr.S_un, phe->h_addr_list[i], sizeof(struct in_addr));        
  } 

1. Есть ли способ найти IP, который связан с интернетом среди многих IP в системе.
2. Последний IP-адрес, получаемый через вышеуказанную программу, всегда является IP-адресом, подключенным к Интернету?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2011

Сокеты не знают, для чего они используются. Ваша заявка должна будет получить IP-адрес сетевого адаптера Интернета из файла конфигурации или аналогичного.

0 голосов
/ 26 апреля 2011
...