En la programación de red en Unix, siempre configuré la opción SO_REUSEADDR en el socket que usa el servidor para escuchar las conexiones. Esto básicamente dice que se puede abrir otro socket en el mismo puerto de la máquina. Esto es útil cuando se recupera de un bloqueo y el socket no se cerró correctamente: la aplicación se puede reiniciar y simplemente abrirá otra toma en el mismo puerto y continuará escuchando.Usando SO_REUSEADDR - ¿Qué sucede con el socket abierto anteriormente?
Mi pregunta es, ¿qué pasa con el viejo socket? Sin duda, todos los datos/conexiones se recibirán en el antiguo socket. ¿Se cierra automáticamente por el sistema operativo?
Para aclarar: después de un programa se bloquea, el sistema operativo, p. Linux Kernel, cerrará el socket automáticamente. Hay razones de protocolo (TCP) por las que no desea volver a abrir una conexión de inmediato. – unixman83
A debe leer sobre este tema: http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for-protocols-and-scalable-servers.html –