Linux-Socket aufheben?

Linux-Socket aufheben?

Ich schreibe eine Netzwerkanwendung und bin auf ein kleines Ärgernis gestoßen. Ich muss zwischen den Tests eine Zeit lang warten, da meinem Serverprogramm auch nach dem Schließen immer noch der von mir verwendete Port „zugewiesen“ ist. Darüber hinaus erschwert dies das Debuggen sehr, da ich nicht sagen kann, was das Problem verursacht, mit dem ich es zu tun habe.

Gibt es eine Möglichkeit, TCP- und UDP-Ports zu Testzwecken freizugeben?

Antwort1

In Ihrem Python-Programm müssen Sie die Shutdown- und Close-Funktionen für den Socket aufrufen, um dem Betriebssystem mitzuteilen, dass Ihr Programm ihn nicht mehr verwendet. Außerdem wird der Socket freigegeben, wenn er nach dem Aufruf dieser Funktionen nicht mehr verwendet wird. Wenn Sie diese Funktionen beim Beenden Ihres Programms nicht aufrufen, müssen Sie warten, bis das Betriebssystem veraltete zugewiesene Sockets bereinigt. Selbst wenn Sie die Anwendung zwangsweise beenden, kann das Betriebssystem nicht explizit erkennen, dass der Socket nicht verwendet wird. Wenn also ein Programm beendet wird und der Socket nicht ordnungsgemäß geschlossen wird, behält das Betriebssystem ihn für eine gewisse Zeit zugewiesen, bis es überprüft, ob er tatsächlich verwendet wird. Wenn dies nicht der Fall ist, wird er für die Verwendung durch andere Programme freigegeben.

Hier ist ein Link, der die Shutdown- und Close-Funktionen für Sockets in Python erklärt. SO Antwort

verwandte Informationen