Sto lavorando con un po 'di Python che assomiglia a questo:libreria socket Python pensa presa è aperta quando non
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.
Mentre è funzionato bene in passato, abbiamo ora ottenere l'errore [Errno 98] Address already in use
. Il gestore SIGINT chiude la connessione socket, quindi non sono sicuro di come sia entrato in quello stato, ma per ora sto solo provando a sistemarlo.
Sia lsof
e netstat
dire non c'è niente che utilizza quella porta:
[$]> sudo netstat -an | grep 43434
[$]> sudo lsof -i :43434
TIME_WAIT
è impostato a 60 secondi, secondo /proc/sys/net/ipv4/tcp_fin_timeout
, ma l'errore si verifica anche ore dopo l'ultima corsa con successo.
Ho provato (temporaneamente) l'impostazione REUSEADDR
(tramite single.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
), ma sembra non avere alcun effetto.
Cosa sta succedendo? Potrò mai utilizzare nuovamente questa porta senza dover riavviare la macchina?
Hai chiamato 'setsockopt' prima chiamata' bind'? –
@WaleedKhan Yep; è andato subito prima del 'try'. –