Создание базового приложения Winsock

Создание базового приложения Winsock

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

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

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

  4. Убедитесь, что среда сборки ссылается на файл библиотеки Winsock Ws2_32.lib. Приложения, использующие Winsock, должны быть связаны с файлом библиотеки Ws2_32.lib. Комментарий #pragma указывает компоновщику, что требуется файл Ws2_32.lib .

  5. Начните программирование приложения Winsock. Используйте API Winsock, включив файлы заголовков Winsock 2. Файл заголовка Winsock2.h содержит большинство функций, структур и определений Winsock. Файл заголовка Ws2tcpip.h содержит определения, представленные в Protocol-Specific приложении WinSock 2 для TCP/IP, который включает более новые функции и структуры, используемые для получения IP-адресов.

    Примечание

    Stdio.h используется для стандартных входных и выходных данных, в частности функции printf().

     

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

#pragma comment(lib, "Ws2_32.lib")

int main() {
  return 0;
}

Примечание

Файл заголовка Iphlpapi.h является обязательным, если приложение использует вспомогательные API IP. Если требуется файл заголовка Iphlpapi.h , #include строку для файла заголовка Winsock2.h следует поместить перед строкой #include для файла заголовка Iphlpapi.h .

Файл заголовка Winsock2.h внутренне включает основные элементы из файла заголовка Windows.h , поэтому обычно нет строки #include для файла заголовка Windows.h в приложениях Winsock. Если для файла заголовка Windows.h требуется строка #include, перед ней должен находиться макрос #define WIN32_LEAN_AND_MEAN. По историческим причинам заголовок Windows.h по умолчанию включает файл заголовка Winsock.h для Windows Sockets 1.1. Объявления в файле заголовка Winsock.h будут конфликтовать с объявлениями в файле заголовка 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 <ws2tcpip.h>
#include <iphlpapi.h>
#include <stdio.h>

#pragma comment(lib, "Ws2_32.lib")

int main() {
  return 0;
}

Следующий шаг. Инициализация Winsock

начало работы с Winsock

Сведения о серверах и клиентах