Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.84
x-954377
3 / 3 / 2
Регистрация: 20.06.2010
Сообщений: 42
#1

Как узнать свой внешний ip адрес? - C++

21.06.2010, 16:35. Просмотров 5318. Ответов 11
Метки нет (Все метки)

Всем привет!!! Подскажите как можно узнать ip адрес компьютера который в данный момент подключён к Интернету даже если через прокси, и показывал реальный ip а не тот который сетевой карты. Заранее спасибо.

http://www.cyberforum.ru/cpp-builder/thread181632.html

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2010, 16:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как узнать свой внешний ip адрес? (C++):

Как узнать ip адрес?
Подскажите Как программно узнать ip адрес моего компьютера?

Сети. как узнать адрес сети, маску, ... по IP адресу?
Кто может чем помочь? Делаю лабу, нужно из диапозона IP адресов (например...

Узнать ip-адрес компьютера по сети, зная его имя в сети
Ребята подскажите, пожалуйста, по такому вопросу. Как можно узнать ip-адрес...

Как узнать Ip адрес сайта?
Можно ли, и если можно то как узнать ИП сайта в DLL?

Узнать внешний IP компьютера с которого запущена программа
Учусь работать с сокетами. Мне нужно узнать внешний IP адрес компьютера с...

11
odip
Эксперт С++
7161 / 3219 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
21.06.2010, 18:36 #2
Зайти на сайт http://getmyip.ru/ http://www.whatismyip.com/

Если через proxy - то будет показывать ip-адрес proxy-сервера во внешнем мире
0
x-954377
3 / 3 / 2
Регистрация: 20.06.2010
Сообщений: 42
21.06.2010, 19:09  [ТС] #3
А средствами C++ как можно
0
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
22.06.2010, 01:29 #4
x-954377, распарсить результат с этих сайтов?
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
22.06.2010, 01:49 #5
C++
1
2
3
4
5
6
7
#include <iostream>
#include <cstdlib>
 
int main(){
    system("ipconfig");
    return 0;
}
0
odip
Эксперт С++
7161 / 3219 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
22.06.2010, 21:22 #6
2easybudda - это не тот IP-ник покажет
1
Alex5
1120 / 781 / 231
Регистрация: 12.04.2010
Сообщений: 2,007
23.06.2010, 13:39 #7
Цитата Сообщение от x-954377 Посмотреть сообщение
А средствами C++ как можно
MSDN Library см. http://msdn.microsoft.com/en-us/library/ms738520(VS.85).aspx


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
 
#include <winsock2.h>
#include <ws2tcpip.h>
 
#pragma comment( lib, "ws2_32.lib")    // WSAStartup  WSACleanup
 
int main(int argc, char* argv[])
{
    // ----------------------------------------------------------------------
    //                                                  WSAStartup()
    // ----------------------------------------------------------------------
    WSADATA  wsaData = {0};
    int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
    if( iResult )
    {
        printf("WSAStartup()  Error %d \n\n", iResult);
        return 1;
    }else{
        printf("WSAStartup()  OK  \n\n");
    }
 
    struct addrinfo hints = { 0 };
    struct addrinfo *result = NULL;
 
    hints.ai_family = AF_UNSPEC;    // winsock2.h
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
 
    // ----------------------------------------------------------------------
    //                                                  getaddrinfo()
    // ----------------------------------------------------------------------
    iResult = getaddrinfo( "compname", "0", &hints, &result);
    if( iResult )
    {
        printf("getaddrinfo()  Error %d \n\n", iResult);
        WSACleanup();
        return 1;
    }else{
        printf("getaddrinfo()  OK \n\n");
    }
    // ----------------------------------------------------------------------
    //                                                 struct addrinfo
    //     Retrieve address from    struct addrinfo *result
    // ----------------------------------------------------------------------
    struct addrinfo *ptr = NULL;
    struct sockaddr_in  *sockaddr_ipv4;
    int i=0;
    for(ptr=result; ptr != NULL ;ptr=ptr->ai_next) 
    {
        printf("getaddrinfo response %d\n", i++);
        printf("\tFlags: 0x%x\n", ptr->ai_flags);
 
        printf("\tFamily: ");
        switch (ptr->ai_family) {
            case AF_UNSPEC:
                printf("Unspecified\n");
                break;
            case AF_INET:
                printf("AF_INET (IPv4)\n");
                sockaddr_ipv4 = (struct sockaddr_in *) ptr->ai_addr;
                printf("\tIPv4 address %s\n",
                    inet_ntoa(sockaddr_ipv4->sin_addr) );
                break;
            case AF_INET6:
                printf("AF_INET6 (IPv6)\n");
                break;
            case AF_NETBIOS:
                printf("AF_NETBIOS (NetBIOS)\n");
                break;
            default:
                printf("Other %ld\n", ptr->ai_family);
                break;
        }
 
    }
    freeaddrinfo(result);
 
    // ----------------------------------------------------------------------
    //                                                  WSACleanup()
    // ----------------------------------------------------------------------
    iResult = WSACleanup();
    if( iResult )
    {
        printf("WSACleanup()  Error %d \n\n", iResult);
    }else{
        printf("WSACleanup()  OK \n\n");
    }
    return 0;
}
Результат работы программы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
WSAStartup()  OK
 
getaddrinfo()  OK
 
getaddrinfo response 0
        Flags: 0x0
        Family: AF_INET (IPv4)
        IPv4 address 192.168.1.2
getaddrinfo response 1
        Flags: 0x0
        Family: AF_INET (IPv4)
        IPv4 address 73.137.123.140
WSACleanup()  OK
0
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
23.06.2010, 19:59 #8
Alex5, ну он и выдаст ip который задан в настройках системы. А как вы получите этим кодом ip прокси? Перед проксей вы видите свой ip прописанный на машине, за проксей его не видят, а видят ип прокси. У вас спрашивают, как получить тот ip, который виден за проксей.
0
x-954377
3 / 3 / 2
Регистрация: 20.06.2010
Сообщений: 42
23.06.2010, 22:07  [ТС] #9
Alex5 спаси огормно!!! тему можно теперь и закрывать.
0
GreyWolf
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 40
30.06.2016, 15:19 #10
Не могу разобраться как это реализовать в C++ Builder. Помогите
0
Kastaneda
Jesus loves me
Эксперт С++
4759 / 2962 / 340
Регистрация: 12.12.2009
Сообщений: 7,520
Записей в блоге: 2
Завершенные тесты: 1
30.06.2016, 16:44 #11
Иногда можно узнать IP, даже есть запрос идет через прокси. Нормальные прокси (а не те, которые предназначены для того, чтобы скрыть IP) посылают специальный HTTP header, который содержит IP клиента. Название хедера не помню, можно погуглить.
0
GreyWolf
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 40
20.07.2016, 06:56 #12
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Может кому пригодится, получение внешнего IP-адреса (на июль 2016 сайт работает):
C++
1
2
3
4
5
6
7
8
AnsiString ip_out (void)
{
    AnsiString ip_o = Form1->IdHTTP1->Get("http://whatismyipaddress.com/");//получаем код страницы
    ip_o.Delete(1,ip_o.Pos("Click for more about")+20);//удаляем все к строки Ваш IP
    ip_o = ip_o.SubString(1,ip_o.Pos("\u0022")-1);// парсим ип
    Form1->Memo1->Lines->Text = ip_o;
    return ip_o;
}
0
20.07.2016, 06:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2016, 06:56
Привет! Вот еще темы с решениями:

Как узнать адрес модуля?
В chaet engine на указателе идет такая запись &quot; &quot;game.exe&quot; +003027C8 =...

Как узнать адрес не экспортируемого метода?
Собсно, как узнать адрес не экспортируемого метода в программе, не используя...

Узнать адрес джампа
С помощью GetProcAdress я узнаю адрес, по которому расположена инструкция...

Как узнать свой IP?
Интересует именно с помощью boost asio, с последующим выводом на консоль.Ну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru