son salida reglas que puerto las entrada crear abrir c network-programming crash ports

que - crear reglas de entrada y salida firewall windows 10



Cómo evitar que los puertos de red se dejen abiertos al bloquearse el programa (3)

Supongo que el programa que está escribiendo es un servidor, por lo que debe usar un puerto conocido. Si ese es el caso, debe usar la opción SO_REUSE_ADDR en el socket como lo señaló Cogsy.

Si, por otro lado, está escribiendo un cliente sw, entonces debe evitar elegir un puerto en particular, permitiendo que el sistema le proporcione uno aleatorio.

Tomé Computer Networking el semestre pasado e hice algo de programación en C en linux (usando gcc) para mis proyectos. Una cosa extremadamente tediosa que me encontré fue si mi programa se bloqueaba o se detenía (que luego tendría que presionar Ctrl + C para matarlo), el puerto de red aún se mantendría abierto durante un minuto más o menos. Entonces, si quisiera volver a ejecutar el programa de inmediato, tendría que ir primero al archivo de encabezado, cambiar el puerto, rehacer el programa y finalmente ejecutarlo. Obviamente, esto se vuelve muy tedioso muy rápido.

¿Hay alguna forma de configurarlo donde el puerto se libera inmediatamente tan pronto como se mata el proceso? Ya sea a través de alguna configuración en Linux, o en el archivo MAKE para mi programa, o incluso programáticamente en C?

Editar: me refiero a cuando escribo un servidor y elijo un puerto específico para alojar el programa.



Apuesto a que son aproximadamente dos minutos :) Como observó @Cogsy, la SO_REUSEADDR socket SO_REUSEADDR es tu amiga. Familiarícese con los estados TCP, es el estado TIME_WAIT que le causa problemas: