Создание базового вспомогательного приложения ДЛЯ IP-адресов
Создание базового вспомогательного приложения IP-адресов
Создайте пустой проект.
Добавьте в проект пустой исходный файл C++.
Убедитесь, что среда сборки ссылается на каталоги Include, Lib и Src пакета SDK.
Убедитесь, что среда сборки связана с файлом вспомогательной библиотеки IP-адресов Iphlpapi.lib и файлом библиотеки Winsock WS2_32.lib.
Примечание
Некоторые базовые функции Winsock используются для возврата значений IP-адресов и других сведений.
Начните программирование вспомогательного приложения IP-адресов. Используйте API вспомогательного IP-адреса, включив файл заголовка вспомогательного ip-адреса.
#include <winsock2.h> #include <iphlpapi.h> #include <stdio.h> int main() { return 0; }
Примечание
Файл заголовка Iphlpapi.h необходим для приложений, использующих вспомогательные функции IP. Файл заголовка Iphlpapi.h автоматически включает другие файлы заголовков со структурами и перечислениями, используемыми вспомогательными функциями IP.
Новые вспомогательные функции IP-адресов, появившиеся в Windows Vista и более поздних версиях, определяются в файле заголовка Netioapi.h , который автоматически включается в файл заголовка Iphlpapi.h . Файл заголовка Netioapi.h никогда не следует использовать напрямую.
Многие структуры и перечисления, используемые вспомогательными функциями IP, определены в файлах заголовков Iprtrmib.h, Ipexport.h и Iptypes.h . Эти файлы заголовков автоматически включаются в файл заголовка Iphlpapi.h и никогда не должны использоваться напрямую.
В пакете средств разработки программного обеспечения (SDK) Microsoft Windows, выпущенных для Windows Vista и более поздних версий, организация файлов заголовков изменилась. Некоторые структуры теперь определены в файлах заголовков Ipmib.h, Tcpmib.h и Udpmib.h , а не в файле заголовка Iprtrmib.h . Файл заголовка Ipmib.h автоматически включает файл заголовка Ifmib.h . Обратите внимание, что эти файлы заголовков автоматически включаются в файл iprtrmib.h, который автоматически включается в файл заголовка Iphlpapi.h .
Файл заголовка Winsock2.h для Windows Sockets 2.0 требуется большинству приложений, использующих ВСПОМОГАТЕЛЬНЫЕ API IP. Если требуется файл заголовка Winsock2.h , #include строка для этого файла должна располагаться перед строкой #include файла заголовка Iphlpapi.h .
Файл заголовка Winsock2.h внутренне включает основные элементы из файла заголовка Windows.h , поэтому обычно #include строки для файла заголовка Windows.h в вспомогательных приложениях по IP-адресу отсутствует. Если для файла заголовка Windows.h требуется строка #include, ей следует предшествовать макрос #define WIN32_LEAN_AND_MEAN. По историческим причинам заголовок Windows.h по умолчанию включает файл заголовка Winsock.h для Windows Sockets 1.1. Объявления в файле заголовка Winsock.h для Windows Sockets 1.1 будут конфликтовать с объявлениями в файле заголовка Winsock2.h , требуемом для Windows Sockets 2.0. Макрос WIN32_LEAN_AND_MEAN предотвращает включение файла заголовка Winsock.h в файл заголовка Windows.h . Ниже приведен пример, демонстрирующий это.
#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() { return 0; }
Примечание
Это базовое вспомогательное приложение использует только некоторые структуры данных IP-адресов и IP-адреса для функций преобразования строк из Windows Sockets 2.0. Эти функции Windows Sockets можно использовать без вызова WSAStartup для инициализации ресурсов Windows Sockets и WSACleanup при использовании этих ресурсов.
В вспомогательных приложениях IP-адресов, которые используют другие функции Winsock, отличные от этих IP-адресов для строковых функций, необходимо вызвать функцию WSAStartup для инициализации ресурсов Windows Sockets перед вызовом любых функций Windows Sockets, а WSACleanup следует вызывать, когда приложение завершает работу с ресурсами Windows Sockets.
Примечание
Файл заголовка Stdio.h необходим для использования различных стандартных функций C в этом базовом вспомогательном приложении IP-адресов.
Следующий шаг. Получение сведений с помощью GetNetworkParams