Udostępnij za pośrednictwem


Wiązanie gniazda

Aby serwer akceptował połączenia klienckie, musi być powiązany z adresem sieciowym w systemie. Poniższy kod pokazuje, jak powiązać gniazdo, które zostało już utworzone z adresem IP i portem. Aplikacje klienckie używają adresu IP i portu do nawiązywania połączenia z siecią hostów.

Aby związać gniazdo

Struktura sockaddr zawiera informacje dotyczące rodziny adresów, adresu IP i numeru portu.

Wywołaj funkcję powiązania, przekazując utworzone gniazdo oraz strukturę sockaddr zwróconą przez funkcję getaddrinfo jako parametr. Sprawdź, czy występują błędy ogólne.

    // 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;
    }

Po wywołaniu funkcji bind, informacje o adresie zwrócone przez funkcję getaddrinfo nie są już potrzebne. Funkcja freeaddrinfo jest wywoływana w celu zwolnienia pamięci przydzielonej przez funkcję getaddrinfo dla tych informacji o adresie.

    freeaddrinfo(result);

Następny krok: nasłuchiwanie na gnieździe

Rozpoczęcie pracy z Winsock

Aplikacja serwera Winsock

Tworzenie gniazda dla serwera