GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Python-Socket schließt die Verbindung nicht ordnungsgemäß

Sie erleben den TIME_WAIT Zustand der angeschlossenen Steckdosen. Auch wenn Sie Ihre Steckdose geschlossen haben, hat dies noch einige Minuten lang anhaltende Folgen. Die Gründe dafür sowie ein Socket-Flag, das Sie setzen können, um das Verhalten zu deaktivieren (SO_REUSEADDR), werden im UNIX-Leitfaden Socket FAQ erläutert.

Kurz gesagt,

server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(...)
...

Versuchen Sie, import sys hinzuzufügen und Ihre App mit sys.exit() zu beenden. Der Socket bleibt reserviert, bis das System davon überzeugt ist, dass die Anwendung geschlossen ist. Sie können dies mit sys.exit()

explizit machen

[Bearbeiten] Ah, okay. Ich bin selbst ziemlich neu in Sachen Steckdosen. Sie sagen also, dass diese Sequenz nicht sicher ist? Ich kann mir keinen anderen Weg vorstellen, es zu tun. Irgendwann muss man seine App schließen, mit etwas Technik, oder? Wie wird es dann richtig gemacht?

server.shutdown(socket.SHUT_RDWR) 
server.close()
sys.exit()

Linux
  1. Wie entferne ich eine CLOSE_WAIT-Socket-Verbindung?

  2. Python-Raw-Socket:Protokoll wird nicht unterstützt

  3. Raw-Socket in Python ohne Root-Rechte erstellen

  4. PHPMailer GoDaddy-Server SMTP-Verbindung abgelehnt

  5. Wie finde ich das andere Ende der Unix-Socket-Verbindung?

So richten Sie einen einfachen Dateiserver mit simpleHTTPserver ein

Behebung:Es kann keine FTP-Verbindung zu einem SFTP-Server in FileZilla hergestellt werden

Fehlerbehebung:Serververbindungsfehler

Beheben des Fehlers „Broken Pipe“ mit SSH-Verbindung

So stellen Sie von Linux aus eine Verbindung zu SQL Server her

So zerstören Sie eine Socket-Verbindung in C vollständig