Voglio essere in grado di interrompere l'ascolto su un socket del server in linux e assicurare che tutte le connessioni aperte dal punto di vista di un client siano gestite correttamente e non chiuse bruscamente (es .: ricevi ECONNRESET) .Presa server di spegnimento di Graceful in Linux
cioè:
sock = create_socket();
listen(sock, non_zero_backlog);
graceful_close(sock);
se il pensiero di chiamare close() e movimentazione prese già accept'd sarebbe sufficiente, ma ci possono essere collegamenti che sono aperti nel portafoglio ordini del kernel che verrà bruscamente chiuso se si chiama vicino() sul socket del server.
Potrebbe essere possibile farlo con ['shutdown'] (http://linux.die.net/man/2/shutdown). Non l'ho ancora provato, quindi non so se funzionerà. –
Non penso che ci sia un modo per farlo. Dai un'occhiata alla coda della discussione qui: http://fixunix.com/networking/535700-disonnecting-tcp-listening-socket.html – Nick
@drscroogemcduck, per favore, definisci cosa intendi con "correttamente". Ottenere un RST per una connessione TCP semiaperta * è * corretto, da RFC. – tbert