2009-04-20 10 views

Respuesta

22

Parece que su programa está escuchando en un zócalo. Normalmente, cuando su programa sale, el sistema operativo cierra todos los sockets que podrían estar abiertos (incluidos los sockets de escucha). Sin embargo, para los zócalos de escucha, el sistema operativo normalmente reserva el puerto durante un tiempo (varios minutos) después de que el programa finalice, por lo que puede manejar cualquier intento de conexión pendiente. Puede observar que si apaga su programa de forma anormal, y luego regresa un tiempo más tarde, se iniciará correctamente.

Si desea evitar este tiempo de retardo, puede usar setsockopt() para configurar el socket con la opción SO_REUSEADDR. Esto le dice al sistema operativo que usted sabe que está bien reutilizar la misma dirección, y no se encontrará con este problema.

Puede establecer esta opción en Java utilizando el método ServerSocket.setReuseAddress(true).

2

El sistema operativo debe manejar este tipo de cosas automáticamente, cuando el proceso de JVM ha finalizado. Sin embargo, puede haber una pequeña demora antes de que el puerto se cierre.

Cuestiones relacionadas