Определить, когда соединение с сокетом отключено C / C ++ Unix - PullRequest
0 голосов
/ 14 июля 2020

Я знаю, что этот вопрос обсуждался несколько раз, но мне не удалось определить, отключен ли сокет в C / C ++ на Unix. Есть ли способ сделать это?

Thx, С уважением от Brooks

1 Ответ

0 голосов
/ 14 июля 2020

Я предполагаю, что сокет может быть закрыт партнером.

Это очень зависит от того, где вы хотите обнаружить разъединение.

Если вы находитесь в режиме блокировки recv: manpage

Эти вызовы возвращают количество полученных байтов или -1, если произошла ошибка. В случае ошибки errno устанавливается для обозначения ошибки.

Когда одноранговый узел потокового сокета выполнил упорядоченное завершение работы, возвращаемое значение будет 0 (традиционное "end- of-file "return).

Если вы хотите знать на send: manpage

В случае успеха эти вызовы возвращают номер отправленных байтов. В случае ошибки возвращается -1, а значение errno устанавливается соответствующим образом.

...