Форум программистов, компьютерный форум CyberForum.ru

C++

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

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

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

Всем привет!!! Подскажите как можно узнать ip адрес компьютера который в данный момент подключён к Интернету даже если через прокси, и показывал реальный ip а не тот который сетевой карты. Заранее спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.06.2010, 18:36     Как узнать свой внешний ip адрес? #2
Зайти на сайт http://getmyip.ru/ http://www.whatismyip.com/

Если через proxy - то будет показывать ip-адрес proxy-сервера во внешнем мире
x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
21.06.2010, 19:09  [ТС]     Как узнать свой внешний ip адрес? #3
А средствами C++ как можно
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
22.06.2010, 01:29     Как узнать свой внешний ip адрес? #4
x-954377, распарсить результат с этих сайтов?
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
22.06.2010, 01:49     Как узнать свой внешний ip адрес? #5
C++
1
2
3
4
5
6
7
#include <iostream>
#include <cstdlib>
 
int main(){
    system("ipconfig");
    return 0;
}
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.06.2010, 21:22     Как узнать свой внешний ip адрес? #6
2easybudda - это не тот IP-ник покажет
Alex5
1039 / 702 / 102
Регистрация: 12.04.2010
Сообщений: 1,766
23.06.2010, 13:39     Как узнать свой внешний ip адрес? #7
Цитата Сообщение от x-954377 Посмотреть сообщение
А средствами C++ как можно
MSDN Library см. http://msdn.microsoft.com/en-us/libr...20(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
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
23.06.2010, 19:59     Как узнать свой внешний ip адрес? #8
Alex5, ну он и выдаст ip который задан в настройках системы. А как вы получите этим кодом ip прокси? Перед проксей вы видите свой ip прописанный на машине, за проксей его не видят, а видят ип прокси. У вас спрашивают, как получить тот ip, который виден за проксей.
x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
23.06.2010, 22:07  [ТС]     Как узнать свой внешний ip адрес? #9
Alex5 спаси огормно!!! тему можно теперь и закрывать.
GreyWolf
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 40
30.06.2016, 15:19     Как узнать свой внешний ip адрес? #10
Не могу разобраться как это реализовать в C++ Builder. Помогите
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,223
Записей в блоге: 1
Завершенные тесты: 1
30.06.2016, 16:44     Как узнать свой внешний ip адрес? #11
Иногда можно узнать IP, даже есть запрос идет через прокси. Нормальные прокси (а не те, которые предназначены для того, чтобы скрыть IP) посылают специальный HTTP header, который содержит IP клиента. Название хедера не помню, можно погуглить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2016, 06:56     Как узнать свой внешний ip адрес?
Еще ссылки по теме:
C++ Как узнать адрес указателя?
Как узнать адрес функции Winexec C++
C++ Как узнать адрес указателя на char?
C++ WinAPI Как узнать адрес не экспортируемого метода?
Как узнать единый адрес смерженных ячеек Excel'я C++ COM

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

Или воспользуйтесь поиском по форуму:
GreyWolf
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 40
20.07.2016, 06:56     Как узнать свой внешний ip адрес? #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;
}
Yandex
Объявления
20.07.2016, 06:56     Как узнать свой внешний ip адрес?
Ответ Создать тему
Опции темы

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