Когда вы выключаете клиента, у него нет возможности сообщить другой стороне, что он уходит. Единственный способ сказать, что узел ушел, - это попытаться отправить что-то ему и заметить, что он не отвечает.
Если в вашем приложении требуется, чтобы обнаруживался мертвый одноранговый узел, вам необходимо реализовать обнаружение мертвого однорангового узла. Вы можете сделать это, включив эту keepalive
опцию socat
, но это может занять несколько часов, чтобы обнаружить мертвый узел. Вы также можете сделать это, отправляя что-то периодически - отправка будет иметь тайм-аут, если узел мертв, вызывая обнаружение. Если другая сторона должна отправлять вам данные, вы можете прервать ее, если вы не получили ожидаемые данные (возможно, с флагом socat
's' -T
).