SOFTWARE > Linguaggi di programmazione e scripting

dead

(1/2) > >>

legacy:
dead

cdimauro:
Purtroppo conosco questo problema. E' un bordello immane, soprattutto quando devi scrivere codice multipiattaforma. :-\

Z80Fan:
Come dice la risposta a serverfault, quel stato è richiesto dal RFC 793 ed è definito essere di 4 minuti.

Quindi il comportamento è giusto secondo la specifica; se Windows chiude il socket senza attendere quel tempo, allora è un suo errore nell'implementazione.

Se questo problema ti capita perchè stai debuggando l'implementazione del server del tuo protocollo, puoi temporaneamente cambiare porta a ogni prova (tanto dopo i 4 minuti puoi tornare a usare quella iniziale).
Se invece il problema è nel normale utilizzo del tuo protocollo, dovresti cambiarlo in modo che sia il client a iniziare la chiusura, in questo modo il server non deve entrare in TIME-WAIT.

Z80Fan:
Il problema di chiudere brutalmente il socket di listening e renderlo libero è che potrebbe avviarsi un programma immediatamente dopo la terminazione del server, e iniziare a parlare col client che ancora crede di essere connesso al server originale; il timeout serve proprio a garantire che anche l'altra parte abbia ricevuto la conferma della chiusura della connessione.

Un male necessario insomma. :(

cdimauro:
Ma i 4 minuti non ti garantiscono nulla: è un valore arbitrario che è stato messo lì per mettere una pezza al problema, che rimane irrisolto. E che crea, in ogni caso, altri casini.

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa