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