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


Привязка сокета

Чтобы сервер принимал клиентские подключения, он должен быть привязан к сетевому адресу в системе. В следующем коде показано, как привязать сокет, который уже был создан с IP-адресом и портом. Клиентские приложения используют IP-адрес и порт для подключения к сети узла.

Привязка сокета

Структура sockaddr содержит сведения о семействе адресов, IP-адресе и номере порта.

Вызовите функцию привязки, передав созданную сокета и структуру sockaddrdr, возвращенную из функции getaddrinfoв качестве параметров. Проверьте наличие общих ошибок.

    // Setup the TCP listening socket
    iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen);
    if (iResult == SOCKET_ERROR) {
        printf("bind failed with error: %d\n", WSAGetLastError());
        freeaddrinfo(result);
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }

После вызова функции информация о адресах, возвращаемая функцией getaddrinfo, больше не требуется. Функция freeaddrinfo вызывается для освобождения памяти, выделенной функцией getaddrinfo для этой информации об этом адресе.

    freeaddrinfo(result);

Следующий шаг: прослушивание сокета

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

серверное приложение Winsock

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