Вы смотрите на ограничение API сокета TCP.Вы можете посмотреть на ECONNRESET
как версию сокета EOF
, или вы можете реализовать протокол более высокого уровня через TCP, который информирует клиента о надвигающемся отключении.
Однако, если вы попробуете последний вариант,помните о неразрешимой проблеме двух армий , которая делает невозможным постепенное отключение в общем случае;это является частью мотивации для механизма сброса соединения TCP в его нынешнем виде.Даже если бы вы могли написать graceful_close()
так, чтобы это работало большую часть времени, вам, вероятно, все равно придется иметь дело с ECONNRESET
, если серверный процесс не будет ждать вечно, чтобы получить graceful_close_ack
от клиента.