Quiero poder dejar de escuchar en un socket de servidor en Linux y asegurarme de que todas las conexiones que están abiertas desde el punto de vista del cliente se manejan correctamente y no abruptamente cerradas (es decir: receive ECONNRESET) .Graceful Shutdown Server Socket en Linux
es decir:
sock = create_socket();
listen(sock, non_zero_backlog);
graceful_close(sock);
Si el pensamiento de llamar a close() y la manipulación de los zócalos ya accept'd sería suficiente, pero no puede haber conexiones que están abiertos en el retraso del núcleo que se cierra bruscamente si llamas cerca() en el socket del servidor.
Es posible que pueda hacerlo con ['shutdown'] (http://linux.die.net/man/2/shutdown). No lo he probado, así que no sé si funcionará. –
No creo que haya una manera de hacer esto. Eche un vistazo al final de la discusión aquí: http://fixunix.com/networking/535700-disonnecting-tcp-listening-socket.html – Nick
@drscroogemcduck defina lo que quiere decir con "correctamente". Obtener un RST para una conexión TCP semiabierta * es * correcto, por RFC. – tbert