Trennen des Servers

Sobald der Server abgeschlossen ist, Daten vom Client zu empfangen und Daten zurück an den Client zu senden, trennt der Server die Verbindung mit dem Client und beendet den Socket.

So trennen Und Herunterfahren eines Sockets

  1. Wenn der Server mit dem Senden von Daten an den Client fertig ist, kann die Funktion zum Herunterfahren aufgerufen werden, um SD_SEND zum Herunterfahren der Sendeseite des Sockets anzugeben. Dadurch kann der Client einige Ressourcen für diesen Socket freigeben. Die Serveranwendung kann weiterhin Daten auf dem Socket empfangen.

    // shutdown the send half of the connection since no more data will be sent
    iResult = shutdown(ClientSocket, SD_SEND);
    if (iResult == SOCKET_ERROR) {
        printf("shutdown failed: %d\n", WSAGetLastError());
        closesocket(ClientSocket);
        WSACleanup();
        return 1;
    }
    
  2. Wenn die Clientanwendung mit dem Empfang von Daten fertig ist, wird die Funktion closesocket aufgerufen, um den Socket zu schließen.

    Wenn die Clientanwendung mithilfe der Windows Sockets-DLL abgeschlossen ist, wird die WSACleanup-Funktion aufgerufen, um Ressourcen freizugeben.

    // cleanup
    closesocket(ClientSocket);
    WSACleanup();
    
    return 0;
    

Vollständiger Serverquellcode

Erste Schritte mit Winsock

Winsock Server-Anwendung

Empfangen und Senden von Daten auf dem Server

Ausführen des Winsock-Client- und Servercodebeispiels