ich mit einem bisschen Python bin arbeiten, die wie folgt aussehen:Python Socket-Bibliothek denkt Buchse offen ist, wenn es nicht
HOST = '127.0.0.1'
PORT = 43434
single = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
single.bind((HOST, PORT))
except socket.error as e:
# Print an error, exit.
Während es in der Vergangenheit gut funktioniert worden ist, jetzt sind wir [Errno 98] Address already in use
die Fehler. Der SIGINT-Handler schließt die Socket-Verbindung, daher bin ich mir nicht sicher, wie es in diesen Zustand gekommen ist, aber im Moment versuche ich nur, es zu beheben.
Beide lsof
und netstat
sagen, es gibt nichts, dass die Port:
[$]> sudo netstat -an | grep 43434
[$]> sudo lsof -i :43434
TIME_WAIT
auf 60 Sekunden eingestellt ist, nach /proc/sys/net/ipv4/tcp_fin_timeout
, aber der Fehler tritt auf, auch Stunden nach dem letzten Lauf erfolgreich.
Ich habe versucht (vorübergehend) REUSEADDR
(über single.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
), aber das scheint keinen Effekt zu haben.
Was passiert in der Tarnation? Kann ich diesen Anschluss jemals wieder verwenden, ohne den Computer neu starten zu müssen?
Haben Sie 'setsockopt' aufrufen, bevor Sie genannt' bind'? –
@WaleedKhan Ja; Es ging direkt vor dem "Versuch". –