Отключение стороны чтения сокета приведет к тому, что любые заблокированные вызовы recv
(или аналогичные) вернут 0
(что означает постепенное отключение). Я не знаю, что будет с данными, которые в настоящее время перемещаются вверх по стеку IP. Это наверняка будет игнорировать данные, которые находятся в полете с другой стороны. Это никак не повлияет на запись в этот сокет.
На самом деле, разумное использование shutdown
- это хороший способ убедиться, что вы убираете, как только закончите. HTTP-клиент, который не использует keepalive, может отключить сторону записи, как только он завершит отправку запроса, и сервер, который видит Connection: closed
, может аналогичным образом отключить сторону чтения, как только он завершит прием запроса. Это приведет к тому, что любая дальнейшая ошибочная активность будет сразу очевидна, что очень полезно при написании кода уровня протокола.