Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/56: Рейтинг темы: голосов - 56, средняя оценка - 4.95
77
1 / 1 / 0
Регистрация: 24.07.2010
Сообщений: 6
1

С++ как узнать ip компа на котором расположена программа?

28.07.2010, 18:22. Показов 10966. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
winsock
плиз если можно простой пример - типо для консольного приложения без MFC, структур и классов

ну чисто пару строчек кода что бы я включил в свое консольное приложение (в нем вже подключаются сокеты) и мне на экран вывело бы строку "ваш ip:"256.25...

ну и если можно с коментами

за ранее большое спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2010, 18:22
Ответы с готовыми решениями:

Как узнать на каких координатах расположена в трее нужная программе иконка?
Надо как то узнать где именно в трее расположена нужная мне иконка, например иконка звука, или...

Как узнать ip своего компа?
сабж

Определить и вывести на экран номер квадрата, в котором расположена точка
Задача 2. Определить и вывести на экран номер квадрата, в котором расположена точка M(x,y). X...

Определить и вывести на печать номер квадранта, в котором расположена точка
определить и вывести на печать номер квадранта, в котором расположена точка М(х,у)

12
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12831 / 7568 / 1764
Регистрация: 25.07.2009
Сообщений: 13,960
28.07.2010, 19:22 2
Цитата Сообщение от 77 Посмотреть сообщение
ну чисто пару строчек кода
да в одну можно уложиться
C++
1
2
3
...
system("ipconfig /all");
...
0
Evg
Эксперт CАвтор FAQ
21280 / 8304 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.07.2010, 19:42 3
Говоря "вывело бы строку", автор наверняка подразумевал, что адрес будет вычислен внутри программы, а не просто напечатан снаружи
0
Эксперт С++
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
28.07.2010, 22:47 4
автор наверняка подразумевал
Подразумевания нужно озвучивать в четком виде
А как хотел, так и получил
0
Evg
Эксперт CАвтор FAQ
21280 / 8304 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.07.2010, 22:50 5
Цитата Сообщение от odip Посмотреть сообщение
Подразумевания нужно озвучивать в четком виде
А как хотел, так и получил
Если быть таким буквоедом, то пример из поста #2 не является ответом на поставленную задачу, потому как в задаче требуется напечатать

"ваш ip:"256.25...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12831 / 7568 / 1764
Регистрация: 25.07.2009
Сообщений: 13,960
28.07.2010, 23:47 6
Цитата Сообщение от Evg Посмотреть сообщение
пример из поста #2 не является ответом на поставленную задачу, потому как в задаче требуется напечатать...
Знаете, как это в паре строк написать, при чём особо не заморачиваясь?
ipconfig /all выведет информацию о всех сетевых устройствах, а их в компьютере может быть больше одного, хуже того - несколько устройств могут быть подключены к разным сетям одновременно. Отсюда вопрос - ip адрес какого из них нужно в строке вывести, программа угадать должна? Или нужно определить ip адрес шлюза, чтобы понять, каким из сетевых устройств комп к интернету подключён и вывести адрес этого устройства? В пару десятков строк уложиться бы - уже не плохо...
Опять же - если нужен внешний ip, это совсем другая история... Писать запрос на какой-нибудь 2ip.ru, читать ответ, искать в нём ip адрес свой...

Добавлено через 22 минуты

Не по теме:

вот в пару строк ;)

C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void){ 
    srand(time(NULL));
    printf("You're ip: %d.%d.%d.%d\n", rand() % 256, rand() % 256, rand() % 256, rand() % 256);
    
    exit(EXIT_SUCCESS);
}

1
Evg
Эксперт CАвтор FAQ
21280 / 8304 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.07.2010, 00:21 7
Может я ошибаюсь, но человек с шестью постами зашёл на форум за помощью, а не для того, чтобы почётные модераторы начали над ним прикалываться, состязаясь друг с другом в остроумии
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
29.07.2010, 00:28 8
Слинковать с Ws2_32.lib
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
#include <iostream>
#include <winsock2.h>
#include <windows.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    const int WSVer = MAKEWORD(2, 2);
    WSAData wsaData;
    hostent *h;
    char buf[128];
    if (WSAStartup(WSVer, &wsaData) == 0)
    {
        if (gethostname(buf, 128) == 0)
        {
            h = gethostbyname(buf);
            if (h != NULL)
                cout << inet_ntoa (*(reinterpret_cast<in_addr *>(*(h->h_addr_list)))) << endl;
            else 
                cout << "You have not any IP." << endl;
        }
        WSACleanup();
    }
    system("pause");
    return 0;
}
2
Эксперт С++
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
29.07.2010, 11:07 9
Чего-то я не уверен что это правильно
То есть hostname-то оно получит
А вот что этот hostname будет преобразован именно в IP-адрес локального компьютера - не уверен
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12831 / 7568 / 1764
Регистрация: 25.07.2009
Сообщений: 13,960
29.07.2010, 12:09 10
Цитата Сообщение от odip Посмотреть сообщение
А вот что этот hostname будет преобразован именно в IP-адрес локального компьютера - не уверен
У меня этот код правильно отработал - показал единственный ip адрес единственного сетевого интерфейса. Но это простой случай, вот что при наличии двух сетевых карт (к примеру) будет - не известно... Опять же, топикстартер так и не определился, какой ему ip показывать - внешний, локальный...
0
Evg
Эксперт CАвтор FAQ
21280 / 8304 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.07.2010, 12:56 11
В структуре hostent, указатель на которую возвращает gethostbyname содержится список адресов (h->h_addr_list). В данном примере просто распечатывается самый первый элемент. А так надо весь список обойти. Поле h->h_length - это количество элементов в списке
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
30.07.2010, 22:21 12
C++
1
2
3
...
cout << "Your IP is: 127.0.0.1" << endl;
...
А вообще-то -
 Комментарий модератора 
научитесь читать линки и пользоваться этим сервисом, а потом уже выкладывайте их


Добавлено через 11 часов 3 минуты
тот линк генерировал не я, а бот
Вот, собсно, что я хотел сказать -
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
30.07.2010, 22:31 13
iama, я знаю как работает этот сервис. Но в запросе был ваш линк, а не запрос.

А теперь перечитайте правила, п. 4.2
0
30.07.2010, 22:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2010, 22:31
Помогаю со студенческими работами здесь

Как узнать HDD key компа
Как узнать HDD key

Как программно узнать IP-адрес компа
Как в скрипте узнать ip адрес пользователя? Есть такая функция которая возращает ip адрес ?

Как узнать MAC адрес компа?
Как узнать MAC адрес компа?

Как расшарить диск(папку) и получить имя компа на котором выполняется приложение?
Вот как это сделать? Ведь просто нужно юзать какие-то API-шные функции. А какие и как? Заранее...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru