Есть ли способ закрыть сокет Unix только для чтения или записи? - PullRequest
3 голосов
/ 07 апреля 2010

Есть ли способ закрыть только «один конец» сокета TCP, чтобы точно указать, что одна сторона соединения завершила запись в соединение?(Точно так же, как вы делаете с конвейером в каждом руководстве по Unix pipe.) Или я должен использовать какое-то внутриполосное решение, например, значение часового или какое-то подобное?

1 Ответ

5 голосов
/ 07 апреля 2010

Вы можете отключить сокет для чтения или записи, используя второй параметр метода:

shutdown(sock, SHUT_RD)
shutdown(sock, SHUT_WR)

Если сервер выполняет запись и выполняет shutdown () для записи, клиент должен получить конец файла при попытке чтения (а не блокировать и ждать поступления данных). Однако он все еще сможет писать в сокет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...