Come si assicura che un socket associato a una porta sia correttamente rilasciato all'uscita del processo in modo tale che la porta possa essere riutilizzata senza l'errore bind()
con EADDRINUSE? Ho scritto un piccolo programma che crea solo un socket, lo lega a una porta fissa, aspetta una connessione e termina immediatamente. Quando si esegue nuovamente il programma, la chiamata bind()
non riesce con EADDRINUSE, ma se si attende alcuni minuti, ha esito positivo.Rilascio delle porte associate all'uscita del processo
Esiste un modo per "separare" esplicitamente il socket, liberando in tal modo il numero di porta?
Ma si noti che tecnicamente, l'utilizzo di SO_REUSEADDR viola il protocollo TCP/IP, rendendo possibile (anche se improbabile) per il prossimo programma che associa quella porta a raccogliere i pacchetti destinati al programma originale. –
Eccellente, esattamente quello che stavo cercando. – JesperE