WSAStartup имеет две основные цели.
Во-первых, он позволяет вам указать, какую версию WinSock вы хотите использовать (вы запрашиваете 2.2 в своем примере).В WSADATA, который он заполняет, он сообщит вам, какую версию он вам предлагает, основываясь на вашем запросе.Он также заполняет некоторую другую информацию , которую вам не нужно просматривать, если вы не заинтересованы .Вам никогда не придется снова отправлять эту структуру WSADATA в WinSock, потому что она используется исключительно для того, чтобы дать вам обратную связь по вашему запросу WSAStartup.
Второе, что он делает, - это настраивает все "закулисные вещи""что ваше приложение должно использовать сокеты.Файл WinSock DLL загружается в ваш процесс, и он имеет множество внутренних структур, которые необходимо настроить для каждого процесса.Эти структуры скрыты от вас, но они видны для каждого выполняемого вами вызова WinSock.
Поскольку эти структуры необходимо настроить для каждого процесса, использующего WinSock, каждый процесс должен вызвать WSAStartup для инициализацииструктуры в его собственном пространстве памяти, и WSACleanup снова разрушает их, когда он завершается с использованием сокетов.