TCP-Verbindung trennen



  • Hallo Leute!

    Habe ein Problem beim Trennen einer TCP-Verbindung.
    In meinem Fall soll der Client die Trennung vornehmen.

    aktives Schließen: (in diesem Fall Client)

    int received_bytes=0;
    int error_value=0;
    char buf[255];
    
    shutdown(sock_,SD_SEND);
    received_bytes=recv( sock_,buf,255,0);
    error_value=closesocket(sock_);
    

    passives Schließen: (in diesem Fall Server)

    int error_value=0;
    
    shutdown(sock_,SD_BOTH); //Hier habe ich auch SD_SEND schon probiert
    error_value=closesocket(sock_);
    

    Das Ganze funktioniert ganz gut, aber es bleibt eine Verbindungsseite offen (ich glaube es ist die Client-Seite)

    Hier noch, was netstat zu den einzelnen Zuständen sagt:
    (die IP-Adresse ist immer 127.0.0.1)

    Lokaler Port   Remote Port  Status
    10000            1455         Hergestellt
    1455            10000         Hergestellt
    -----shutdown(aktiv)-------------
    10000            1455         SCHLIESSEN_WARTEN
    1455            10000         FIN_WARTEN_2
    -----shutdown(passiv)------------
    1455            10000         WARTEND
    

    Hier bleibt das Ganze dann hängen. Erst nach einem Timeout wird die Verbindung beendet (ein paar Minuten)

    Was ist daran falsch?

    Das VC6 Testprojekt findet ihr unter:
    http://www.sbox.tugraz.at/home/r/reiterj/testtcp.zip
    Vorsicht, der Server befindet sich in einer Endlosschleife!

    Danke für Eure Hilfe,
    Joe



  • Dann ruf auf beiden Seiten closesocket auf.



  • SCNR schrieb:

    Dann ruf auf beiden Seiten closesocket auf.

    Siehe letzte Zeile in den Code-Schnipseln
    Joe


Anmelden zum Antworten