Udostępnij za pośrednictwem


Nawiązywanie połączenia z gniazdem

Aby klient komunikował się w sieci, musi nawiązać połączenie z serwerem.

Aby nawiązać połączenie z gniazdem

Wywołaj funkcję connect, przekazując utworzone gniazdo i strukturę typu sockaddr jako parametry. Sprawdź, czy występują błędy ogólne.

// Connect to server.
iResult = connect( ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
if (iResult == SOCKET_ERROR) {
    closesocket(ConnectSocket);
    ConnectSocket = INVALID_SOCKET;
}

// Should really try the next address returned by getaddrinfo
// if the connect call failed
// But for this simple example we just free the resources
// returned by getaddrinfo and print an error message

freeaddrinfo(result);

if (ConnectSocket == INVALID_SOCKET) {
    printf("Unable to connect to server!\n");
    WSACleanup();
    return 1;
}

Funkcja getaddrinfo służy do określania wartości w strukturze sockaddr. W tym przykładzie pierwszy adres IP zwrócony przez funkcję getaddrinfo jest używany do określenia struktury sockaddr, która jest przekazywana do connect. Jeśli wywołanie connect nie powiedzie się z pierwszym adresem IP, spróbuj wykonać następną addrinfo struktury na liście połączonej zwróconej z funkcji getaddrinfo.

Informacje zawarte w strukturze sockaddr obejmują:

  • adres IP serwera, z którego klient spróbuje nawiązać połączenie.
  • numer portu na serwerze, z którego klient będzie się łączyć. Ten port został określony jako port 27015, gdy klient wywołał funkcję getaddrinfo.

Następny krok: wysyłanie i odbieranie danych na kliencie

Wprowadzenie do Winsock

aplikacji klienckiej Winsock

Tworzenie gniazda dla klienta