Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/48: Рейтинг темы: голосов - 48, средняя оценка - 4.88
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
1

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

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

Всем привет!!! Подскажите как можно узнать ip адрес компьютера который в данный момент подключён к Интернету даже если через прокси, и показывал реальный ip а не тот который сетевой карты. Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2010, 16:35
Ответы с готовыми решениями:

Узнать внешний IP адрес и передать его на другой сервер
Всем привет! Необходимо узнать и записать в переменную внешний IP адрес посредством c++ и передать...

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

Как узнать свой адрес
В нете много кто чего предлагает, как узнать свой IP. Интересует способ для C++Builder, компонента...

Как получить свой внешний id адрес с приминением публичных stun-серверов и c++?
Собственно, нахожусь я сейчас за NAT'ом и хочу получить свой внешний айпи с помощью публичного...

11
Эксперт С++
7174 / 3233 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
21.06.2010, 18:36 2
Зайти на сайт http://getmyip.ru/ http://www.whatismyip.com/

Если через proxy - то будет показывать ip-адрес proxy-сервера во внешнем мире
0
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
21.06.2010, 19:09  [ТС] 3
А средствами C++ как можно
0
Эксперт JavaЭксперт С++
8362 / 3583 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
22.06.2010, 01:29 4
x-954377, распарсить результат с этих сайтов?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6765 / 1619
Регистрация: 25.07.2009
Сообщений: 12,484
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
Эксперт С++
7174 / 3233 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
22.06.2010, 21:22 6
2easybudda - это не тот IP-ник покажет
1
1127 / 786 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
23.06.2010, 13:39 7
Цитата Сообщение от x-954377 Посмотреть сообщение
А средствами C++ как можно
MSDN Library см. http://msdn.microsoft.com/en-u... S.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
Эксперт JavaЭксперт С++
8362 / 3583 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
23.06.2010, 19:59 8
Alex5, ну он и выдаст ip который задан в настройках системы. А как вы получите этим кодом ip прокси? Перед проксей вы видите свой ip прописанный на машине, за проксей его не видят, а видят ип прокси. У вас спрашивают, как получить тот ip, который виден за проксей.
0
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
23.06.2010, 22:07  [ТС] 9
Alex5 спаси огормно!!! тему можно теперь и закрывать.
0
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 41
30.06.2016, 15:19 10
Не могу разобраться как это реализовать в C++ Builder. Помогите
0
Jesus loves me
Эксперт С++
5110 / 3122 / 353
Регистрация: 12.12.2009
Сообщений: 7,899
Записей в блоге: 2
30.06.2016, 16:44 11
Иногда можно узнать IP, даже есть запрос идет через прокси. Нормальные прокси (а не те, которые предназначены для того, чтобы скрыть IP) посылают специальный HTTP header, который содержит IP клиента. Название хедера не помню, можно погуглить.
0
6 / 6 / 1
Регистрация: 27.11.2009
Сообщений: 41
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2016, 06:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Узнать свой внешний IP адрес
String host = System.Net.Dns.GetHostName(); System.Net.IPAddress ip =...

Как узнать внешний IP адрес?
Как узнать внешний IP адрес с помощью сайта www.getip.com? Получаем html код страницы: ...

Как узнать внешний IP-адрес
Доброе Время суток. Есть программа для Рекконекта интернет соединений. В ней добавил button для...

Как узнать МАК-адрес зная внешний и внутренний IP?
Как узнать МАК-адрес зная внешний и внутренний IP? И какую вообще можно вытянуть информацию?


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

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

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