0 / 0 / 0
Регистрация: 31.12.2017
Сообщений: 2

Вывести на экран информацию сетевого адаптера — IP адрес, Gateway, имя адаптера. WinAPI

03.01.2019, 19:23. Показов 5554. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравия желаю! По тз начал изучать винапи. Буквально недавно занялся плюсами и пока плохо разбираюсь во всем, но сделать нужно. В общем пытался гуглить, в основном перенаправляют на тему майкрософта с библиотекой iphlpapi.h. В разделе IP Helper почитал немного и нашел кусок, который подходит к моему заданию. Скопировал слово в слово себе в Dev cpp (на нем пишу, остальные почему то на моем компьютере очень глючат). Но загвоздка в том, что все это дело не компилируется. Куча ошибок, однако исправить их у меня знаний не хватает, ибо не особо понимаю что там происходит вообще. Помогите разобраться и исправить, чтобы работало все!)

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
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
 
#include <windows.h>
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
 
 
 
 
int main() {
    
    
    
    IP_ADAPTER_INFO *pAdapterInfo;
    ULONG ulOutBufLen;
    DWORD dwRetVal;
    pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
    ulOutBufLen = sizeof(IP_ADAPTER_INFO);
    if (GetAdaptersAddresses( pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS) {
        free (pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *) malloc ( ulOutBufLen );
}
 
    if ((dwRetVal = GetAdaptersAddresses( pAdapterInfo, &ulOutBufLen)) != ERROR_SUCCESS) {
        printf("GetAdaptersInfo call failed with %d\n", dwRetVal);
}
 
 
    PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
    while (pAdapter) {
        printf("Adapter Name: %s\n", pAdapter->AdapterName);
        printf("Adapter Desc: %s\n", pAdapter->Description);
        printf("\tAdapter Addr: \t");
        for (UINT i = 0; i < pAdapter->AddressLength; i++) {
            if (i == (pAdapter->AddressLength - 1))
                printf("%.2X\n",(int)pAdapter->Address[i]);
            else
                printf("%.2X-",(int)pAdapter->Address[i]);
        }
        printf("IP Address: %s\n", pAdapter->IpAddressList.IpAddress.String);
        printf("IP Mask: %s\n", pAdapter->IpAddressList.IpMask.String);
        printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
        printf("\t***\n");
        if (pAdapter->DhcpEnabled) {
            printf("\tDHCP Enabled: Yes\n");
            printf("\t\tDHCP Server: \t%s\n", pAdapter->DhcpServer.IpAddress.String);
        }
        else
            printf("\tDHCP Enabled: No\n");
    
        pAdapter = pAdapter->Next;
    }
}
Миниатюры
Вывести на экран информацию сетевого адаптера — IP адрес, Gateway, имя адаптера. WinAPI  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.01.2019, 19:23
Ответы с готовыми решениями:

имя рабочей группы, тип сетевого адаптера, MAC-адрес
Не получается найти команды в cmd: имя рабочей группы тип сетевого адаптера MAC-адрес

Компьютеру не назначен адрес от сети для сетевого адаптера
Народ просветите кому не лень, заранее спасибо. Почему на Windows 7 после выхода из спящего режима при просмотре событий выскакивает ошибка...

Как из Windows NT/2000 посмотреть MAC-адрес сетевого адаптера?
Добрый день! Есть вопрос. Как из Windows NT/2000 посмотреть MAC-адрес сетевого адаптера? В Windows 9x нет проблем. Команда winipcfg...

4
Эксперт CЭксперт С++
 Аватар для liv
5118 / 4572 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
03.01.2019, 20:12
Kazadon, вместо GetAdaptersAddresses надо вызывать GetAdaptersInfo (в двух местах )

Добавлено через 2 минуты
И добавить библиотеку
C++
1
#pragma comment(lib, "IPHLPAPI.lib")
1
0 / 0 / 0
Регистрация: 31.12.2017
Сообщений: 2
03.01.2019, 20:48  [ТС]
GetAdaptersInfo стояло сначала, но выдавало: (.text+0x2f): undefined reference to `GetAdaptersInfo'. Это я потом по совету майкрософта поменял. Оказывается неправильно поменял ). В общем я через командную строку откомпилировал, все работает с Info, но я просто не могу понять почему в дэв цпп прога не запускается, а через командную все норм откомпилировалось и запустилось... Расскажите плиз)
0
Эксперт CЭксперт С++
 Аватар для liv
5118 / 4572 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
04.01.2019, 11:49
Цитата Сообщение от Kazadon Посмотреть сообщение
undefined reference
Это есть неопределенная ссылка. Т.е. линковщик не нашел, где взять GetAdaptersInfo. Строка
C++
1
#pragma comment(lib, "IPHLPAPI.lib")
как раз и говорит, что надо включить указанную библиотеку, где и находится GetAdaptersInfo.
Почему не срабатывает в devcpp не скажу, не пользуюсь. Могу только посоветовать добавить IPHLPAPI.lib в самом проекте. Там, где перечисляются kernel32.lib, user32.lib, gdi32.lib и другие.
1
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
04.01.2019, 23:11
Dev-C++ содержит в себе компилятор MinGW.
Если компилировать через командную строку этот код, этим компилятором, то нужно добавить -liphlpapi
То есть
Code
1
g++ main.cpp -o main.exe -liphlpapi
Ну а если работать через среду, то настройках проекта, в свойствах линкера нужно добавить то ли -liphlpapi то ли выбрать файл libiphlpapi.a , точно сказать не могу, так как в этой среде давно не работал.
Цитата Сообщение от liv Посмотреть сообщение
Могу только посоветовать добавить IPHLPAPI.lib
У всех библиотек для компилятора MinGW есть префикс lib и расширение файла .a
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2019, 23:11
Помогаю со студенческими работами здесь

Не получается выбрать имя сетевого адаптера VirtualBox
Подскажите как можно исправить следующую проблему: захожу в настройки виртуальной машины, в раздел Сеть, вкладка Адаптер 1 , Тип...

Проблемы сетевого адаптера ?
На сервере DELL стоит ОС WIN2003 SERVER, 2 СЕТЕВЫХ АДАПТЕРА Intel (R) PRO/1000 MT Network Connection Сеть в конторе бездоменная, около...

Апгрейд сетевого адаптера
Здравствуйте Ноутбук Dell Studio 1537, сетевой адаптер dell wireless 1397 wlan mini-card не поддерживает 802.11n. Скорость от...

Настройки сетевого адаптера
Здравствуйте! Я очень часто подключаю к компьютеру PS3 по RJ45 разъёму, интернет тоже подключен по RJ45 и так как он у меня один, я...

Отключение сетевого адаптера
Здравствуйте. Есть проблема-нужен батник или команда в консоли, которая отключает сетевой адаптер. Для вин8ю полазил на форуме не нашел...


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

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

Новые блоги и статьи
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
Настройка MTProxy
Loafer 11.06.2025
Дополнительная информация к инструкции по настройке MTProxy: Перед сборкой проекта необходимо добавить флаг -fcommon в конец переменной CFLAGS в Makefile. Через crontab -e добавить задачу: 0 3. . .
Изучаем Docker: что это, как использовать и как это работает
Mr. Docker 10.06.2025
Суть Docker проста - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер, если говорить образно, это запечатанная коробка, в которой находится ваше приложение вместе. . .
Тип Record в C#
stackOverflow 10.06.2025
Многие годы я разрабатывал приложения на C#, используя классы для всего подряд - и мне это казалось естественным. Но со временем, особенно в крупных проектах, я стал замечать, что простые классы. . .
Разработка плагина для Minecraft
Javaican 09.06.2025
За годы существования Minecraft сформировалась сложная экосистема серверов. Оригинальный (ванильный) сервер не поддерживает плагины, поэтому сообщество разработало множество альтернатив. CraftBukkit. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru