Показать сообщение отдельно

Узнать IP на C++
  #1  
Старый 06.08.2009, 16:48
agrofyl2
Познающий
Регистрация: 25.04.2008
Сообщений: 51
С нами: 9497102

Репутация: 17
По умолчанию Узнать IP на C++

При тестировании моего тр... в общем моей программы, у меня возникла проблема: нужно было определить айпи-адрес клиента.
Определяю я его так:
Код:
//Получиние своего IP
void GetCurrentIP(char *host) {
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2,2), &wsaData);// инициализируем socket'ы используя Ws2_32.dll для процесса
	char HostName[1024]; // создаем буфер для имени хоста    
	if(!gethostname(HostName, 1024)) // получаем имя хоста  
	{
		if(LPHOSTENT lphost = gethostbyname(HostName)) // получаем IP хоста, т.е. нашего компа
			strcpy(host,inet_ntoa(*((in_addr*)lphost->h_addr_list[0]))); // преобразуем переменную типа LPIN_ADDR в DWORD    
	}    
	WSACleanup();
}
Определять то он определяет, НО! при тесте обнаружилось, что, например, если у клиента АДСЛ, то он выдает 198.168.0.12 а не внешний айпи, как если бы у клиента был диалап.

Можно ли как-нибудь определить внешний адрес методами С++, не прибегая к стороннему серверу(я конечно могу заставить его подконнектится к моему скрипту, опр. айпишник, или, например, спарсить его с 2ip.ru, но это, как мне кажется, изврат).

Или, например, если заставить его приконнектится к опр.(моему) IP, а самому принять этот коннект, то как тогда определить адрес?
 
Ответить с цитированием