kill the socket :D
-
Hallo,
Also ich habe ein Client und ein Server.
Ein Server öffnet mir einen listening socket über Port 9998 und der client connect darauf in einer unendlich schleife mit einem abstand von 2 sekunden. nachdem der server den verbindungswunsch des clients akzeptiert hat schließt er den socket mit close(socket);das problem ist:
netstat -ano | grep 9998tcp 0 0 192.168.1.252:9998 192.168.1.252:60690 FIN_WAIT2 timewait (50.86/0/0) tcp 1 0 192.168.1.252:60667 192.168.1.252:9998 CLOSE_WAIT off (0.00/0/0) tcp 0 0 192.168.1.252:9998 192.168.1.252:60700 FIN_WAIT2 timewait (58.86/0/0) tcp 1 0 192.168.1.252:60672 192.168.1.252:9998 CLOSE_WAIT off (0.00/0/0) tcp 0 0 192.168.1.252:9998 192.168.1.252:52667 FIN_WAIT2 timewait (14.85/0/0) tcp 1 0 192.168.1.252:60696 192.168.1.252:9998 CLOSE_WAIT off (0.00/0/0) tcp 0 0 192.168.1.252:9998 192.168.1.252:52666 FIN_WAIT2 timewait (12.85/0/0) tcp 1 0 192.168.1.252:60674 192.168.1.252:9998 CLOSE_WAIT off (0.00/0/0)
netstat -ano |grep 9998 |wc
142 1136 13518
1ne Minute später das gleiche
netstat -ano |grep 9998 |wc159 1272 15111
mir kommt es so vor, dass sich die Dinger ansammeln
Mach ich was falsch bzw. muss ich den socket sonst wie "killen"?Danke für die Hilfe
LG
-
Kannst du diese Linuxkauderwelsch auch in deutsch übersetzen?
Gibts auch C++ Code?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
also dein code wäre überaus hilfreich. kann mir da jetzt nicht viel drunter vorstellen.
blan
-
Hi,
Unter linux ist das normal das der Listen port noch offen ist,
Normalerweise sollte er dann nach ein bis zwei minuten zu gehen.MFG ReduX
-
Hallo,
also eigentlich muss eine tcp-Verbindung erst heruntergefahren werden. Bedeutet: es muss ein FIN gesendet werden. Das sollte derjenige, der die Verbindung abbaut mit einem "shutdown()" generieren. Die Gegenstelle sollte dann ihrerseits mit einem FIN antworten. Das kriegt man mit, wenn man ein finales read durchführt und dieses ohne Daten, also ohne Fehler, aber mit der Länge 0 zurückkehrt. Dann darf man die Verbindung mit close() schließen.
Allerdings geht die einfache close()-Variante auch. Dann übernimmt der Kernel das herunterfahren. Der wartet aber, wenn ich das richtig in Erinnerung habe, auf einen Timeout.
Hoffe ich konnte dir helfen.
Grüße - Yorn
-
Schau Dir mal unter der man-page socket(7) die Option SO_REUSEADDR an. Vielleicht ist es das, was Du brauchst.
Tntnet