Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

06.08.2009, 16:48
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме: 146826
Репутация:
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, а самому принять этот коннект, то как тогда определить адрес?
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|