Поделиться через


Создание базового приложения для работы с IP

Создать базовое приложение «IP Helper»

  1. Создайте пустой проект.

  2. Добавьте пустой исходный файл C++ в проект.

  3. Убедитесь, что среда сборки относится к каталогам Include, Lib и Src пакета SDK для платформы.

  4. Убедитесь, что среда сборки ссылается на файл библиотеки IP-помощника Iphlpapi.lib и файл библиотеки Winsock WS2_32.lib.

    Заметка

    Некоторые основные функции Winsock используются для возврата значений IP-адресов и других сведений.

     

  5. Начните программирование приложения IP Helper. Используйте вспомогательный API IP-помощника, включив файл заголовка IP-помощника.

    #include <winsock2.h>
    #include <iphlpapi.h>
    #include <stdio.h>
    
    int main() {
      return 0;
    }
    
    

    Заметка

    Файл заголовка Iphlpapi.h необходим для приложений, использующих вспомогательные функции IP. Файл заголовка Iphlpapi.h автоматически включает другие файлы заголовков со структурами и перечислениями, используемыми функциями IP Helper.

    Новые функции поддержки IP-адресов, представленные в Windows Vista и более поздних версий, определены в файле заголовка Netioapi.h, который автоматически включается в файл заголовка Iphlpapi.h. Файл заголовка Netioapi.h никогда не следует использовать напрямую.

    Многие структуры и перечисления, используемые вспомогательными функциями IP, определены в заголовочных файлах Iprtrmib.h , Ipexport.h и Iptypes.h . Эти файлы заголовков автоматически включаются в файл заголовка Iphlpapi.h и никогда не должны использоваться напрямую.

    В пакете средств разработки программного обеспечения Microsoft Windows (SDK), выпущенных для Windows Vista и более поздних версий, организация файлов заголовков изменилась. Некоторые структуры теперь определены в файлах заголовков Ipmib.h, Tcpmib.hи Udpmib.h, а не в файле заголовков Iprtrmib.h. Файл заголовка Ipmib.h автоматически включает файл заголовка Ifmib.h. Обратите внимание, что эти файлы заголовков автоматически включаются в Iprtrmib.h, который автоматически включается в файл заголовка Iphlpapi.h.

    Большинству приложений, использующих IP Helper API, требуется файл заголовка Winsock2.h для Windows Sockets 2.0. Если требуется файл заголовка Winsock2.h, строка #include для этого файла должна быть помещена перед строкой #include для файла заголовка Iphlpapi.h.

    Файл заголовка Winsock2.h автоматически включает основные элементы из Windows.h, поэтому обычно в приложениях IP Helper нет строки #include для Windows.h. Если для файла заголовка Windows.h требуется строка #include, этому должна предшествовать макрос #define WIN32_LEAN_AND_MEAN. По историческим причинам заголовок Windows.h по умолчанию включает файл заголовка Winsock.h для сокетов Windows 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 Helper использует только некоторые структуры данных IP-адресов и функции преобразования IP-адресов в строку из Windows Sockets 2.0. Эти функции сокетов Windows можно использовать без вызова WSAStartup для инициализации ресурсов сокетов Windows и выполнения WSACleanup после завершения использования этих ресурсов.

    В вспомогательных приложениях IP Helper, которые используют другие функции Winsock, кроме функций преобразования IP-адреса в строку, необходимо вызвать функцию WSAStartup, чтобы инициализировать ресурсы сокетов Windows перед вызовом любых других функций сокетов Windows. Функцию WSACleanup следует вызывать, когда приложение завершит использование ресурсов сокетов Windows.

     

    Заметка

    Файл заголовка Stdio.h необходим для использования различных стандартных функций языка C в этом базовом IP-вспомогательном приложении.

     

    Следующий шаг: Получение сведений с помощью GetNetworkParams