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

C++

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

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

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

Всем привет!!! Подскажите как можно узнать ip адрес компьютера который в данный момент подключён к Интернету даже если через прокси, и показывал реальный ip а не тот который сетевой карты. Заранее спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 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
 Аватар для x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
21.06.2010, 19:09  [ТС]     Как узнать свой внешний ip адрес? #3
А средствами C++ как можно
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
22.06.2010, 01:29     Как узнать свой внешний ip адрес? #4
x-954377, распарсить результат с этих сайтов?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.06.2010, 21:22     Как узнать свой внешний ip адрес? #6
2easybudda - это не тот IP-ник покажет
Alex5
998 / 661 / 92
Регистрация: 12.04.2010
Сообщений: 1,681
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
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
23.06.2010, 19:59     Как узнать свой внешний ip адрес? #8
Alex5, ну он и выдаст ip который задан в настройках системы. А как вы получите этим кодом ip прокси? Перед проксей вы видите свой ip прописанный на машине, за проксей его не видят, а видят ип прокси. У вас спрашивают, как получить тот ip, который виден за проксей.
x-954377
 Аватар для x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
23.06.2010, 22:07  [ТС]     Как узнать свой внешний ip адрес? #9
Alex5 спаси огормно!!! тему можно теперь и закрывать.
GreyWolf
 Аватар для GreyWolf
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 37
30.06.2016, 15:19     Как узнать свой внешний ip адрес? #10
Не могу разобраться как это реализовать в C++ Builder. Помогите
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 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 адрес?
Еще ссылки по теме:

Как узнать Ip адрес сайта? Visual C++
C++ Visual Studio как программно узнать адрес папки с проектом?
C++ Как узнать адрес указателя?
Как узнать адрес функции Winexec C++
C++ WinAPI Как узнать адрес не экспортируемого метода?

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

Или воспользуйтесь поиском по форуму:
GreyWolf
 Аватар для GreyWolf
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 37
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 адрес?
Ответ Создать тему
Опции темы

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