Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.84
x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
#1

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

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

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

Как узнать внешний IP адрес - C++ Builder
Доброго всем вечера(ночи), мне необходимо разобраться каким образом можно получить внешний IP адрес компьютера, в моем случае ADSL, то...

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

Сети. как узнать адрес сети, маску, ... по IP адресу? - C++ Builder
Кто может чем помочь? Делаю лабу, нужно из диапозона IP адресов (например 10.70.25.10 - 10.70.25.40) узнать адрес сети, маска, адрес шлюза,...

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

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

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

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

Если через proxy - то будет показывать ip-адрес proxy-сервера во внешнем мире
0
x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
21.06.2010, 19:09  [ТС] #3
А средствами C++ как можно
0
M128K145
Эксперт С++
8299 / 3519 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
22.06.2010, 01:29 #4
x-954377, распарсить результат с этих сайтов?
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
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
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.06.2010, 21:22 #6
2easybudda - это не тот IP-ник покажет
0
Alex5
1102 / 763 / 119
Регистрация: 12.04.2010
Сообщений: 1,934
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
Эксперт С++
8299 / 3519 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
23.06.2010, 19:59 #8
Alex5, ну он и выдаст ip который задан в настройках системы. А как вы получите этим кодом ip прокси? Перед проксей вы видите свой ip прописанный на машине, за проксей его не видят, а видят ип прокси. У вас спрашивают, как получить тот ip, который виден за проксей.
0
x-954377
3 / 3 / 0
Регистрация: 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
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 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
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Может кому пригодится, получение внешнего 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
Привет! Вот еще темы с ответами:

Как узнать адрес не экспортируемого метода? - C++ WinAPI
Собсно, как узнать адрес не экспортируемого метода в программе, не используя отладку. Я знаю имя экспортируемой функции и ее адрес,...

Узнать адрес джампа - C++ WinAPI
С помощью GetProcAdress я узнаю адрес, по которому расположена инструкция джампа по адресу 0x12345678, сохраняю адрес этого джампа в...

Как узнать свой IP? - C++
Интересует именно с помощью boost asio, с последующим выводом на консоль.Ну или как узнать айпишник подключившегося клиента(на стороне...

Как узнать адрес указателя? - C++
(void *)str показывает адрес строки, а как узнать адрес указателя? char *str = &quot;bla-bla-bla&quot;; cout &lt;&lt; &quot;Value of str is: &quot; &lt;&lt; str &lt;&lt;...


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

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

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