Estoy escribiendo una aplicación de red y me he encontrado con una ligera molestia. Tengo que esperar un período entre las pruebas, porque mi programa de servidor, incluso después de cerrarlo, todavía tiene "asignado" el puerto que estoy usando. Además, esto hace que la depuración sea realmente difícil, ya que no puedo saber qué está causando el problema con el que estoy lidiando.
Para fines de prueba, ¿hay alguna forma de liberar puertos TCP y UDP?
Respuesta1
En su programa Python, debe llamar a las funciones de apagado y cierre del socket para que el sistema operativo sepa que su programa ya no lo usa y desasignará el socket si no lo usa nada después de llamar a esas funciones. Si no llama a estas funciones cuando su programa sale, terminará teniendo que esperar a que el sistema operativo limpie los sockets asignados obsoletos. Incluso si fuerza la eliminación de la aplicación, ya que el sistema operativo todavía no tiene forma de saber explícitamente que no se está utilizando. Entonces, cuando un programa muere y no cierra el socket correctamente, el sistema operativo lo mantendrá asignado por un tiempo, hasta que verifique si realmente se está utilizando, y si no es así, entonces lo desasigna para que lo utilicen otros programas.
Aquí hay un enlace que explicará las funciones de apagado y cierre de sockets en Python. Pues contesta