2010-10-04 26 views
5

Supongamos que tiene un socket escuchando en un puerto TCP y algunos clientes están conectados. Cuando uno emite sock_close (fd) en C e intenta volver a enlazarse en el mismo puerto, el enlace falla. Algunos estado TIME_WAIT se ve en la "-plutnoa netstat", tales como:Cerrar un socket TCP de escucha en C

tcp  0  0 127.0.0.1:4567   127.0.0.1:32977   TIME_WAIT -    timewait (17.12/0/0) 

Entonces, ¿cómo se puede desconectar correctamente el socket del servidor y vuelva a conectar en el mismo puerto de inmediato?

+1

Encontré SO_REUSEADDR, buscándolo ahora ... – whoi

Respuesta

8

Desea utilizar la opción SO_REUSEADDR en el zócalo. La página de manual relevante es socket(7). Aquí hay un example de su uso. This question explica lo que sucede.

Cuestiones relacionadas