Wie zu schließen (kill-release?) eine Steckdose, die ist im FIN_WAIT_2 Zustand?
Ich habe eine client-Anwendung, die verwendet eine nicht verwaltete dll für die Kommunikation mit einem server.
Alle Netzwerk-bezogene Operationen sind perormed innerhalb der nicht verwalteten dll.
Nach einer Reihe von Operationen mit dem server, der client is running out von TCP-ports.
Wenn wir überprüfen den Zustand der netwotk mit 'netstat -an', wir erhalten das folgende Ergebnis:
...
TCP 192.168.11.55:56048 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56049 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56050 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56051 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56052 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56053 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56054 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56055 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56056 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56057 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56058 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56059 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56060 192.168.10.27:5000 FIN_WAIT_2
...
Werden die ports erst freigegeben, wenn der client geschlossen ist.
Wenn ich das VS-Projekt im Debug-Modus, es läuft nie aus den Häfen.
Aber, beim laufen im Release-Modus, es ist passiert.
Und ich habe keinen Zugriff, weder auf server-noch client-Quelle.
Wie die Freigabe oder töten Sie die ports, die im FIN_WAIT_2 Zustand?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ein socket ist im FIN_WAIT_2, die lokalen socket wurde geschlossen und warten auf die remote-Buchse zum senden Ihrer Nähe anfordern. Wenn diese schließen-Anforderung nicht ankommt, der sockel wird bleiben im FIN_WAIT_2 Zustand für eine Weile.
Der Grund hinter diesem ist, dass, wenn der schließen-Anforderung von der Gegenseite verzögern würde und kommen nach einer anderen Anwendung verwendet den sockel, dass die neue Verbindung würde sofort geschlossen.
Können Sie ändern Sie die timeout-wenn Sie möchten, aber am Ende der nicht verwalteten dll wurde nicht vollständig umgesetzt, TCP shutdown-Sequenz. Weitere Informationen finden Sie unter
http://answers.microsoft.com/en-us/windows/forum/windows_7-networking/how-to-close-finwait2-connections-except-reboot/ba2fed9f-8b61-4b71-ab5b-d39dc9a387e3
Server-Seite-socket Lesen
0 bytes
wenn Sie shutdown/schließen des client-socket.An diesem Punkt, sollten Sie zu beenden/schließen Sie das server-socket. Ihre Verbindung wird zeigen, wie
TIME_WAIT
mitPID0
und irgendwann verschwinden.Ich denke, dass ist so gut wie es geht.