Когда другой конец отключится, сокет станет читаемым (сокет чтения не заблокируется) и read()
вернет 0
. Это обычный способ обнаружения отключения (похоже, вы уже делаете это на стороне сервера).
Если вы заблокированы в write()
или попытаетесь write
в сокете, закрытом на другом конце, ваш процесс получит сигнал SIGPIPE
и write
вернет -1
с errno
установить на EPIPE
.
Действие по умолчанию для SIGPIPE
состоит в том, чтобы завершить процесс, поэтому, если вы этого не изменили, ваш клиент просто умрет, когда попытается выполнить запись на удаленный сервер.