Предположим, у нас есть A и B, соединенные розеткой.Если A записывает некоторые данные, а затем закрывает сокет, сможет ли B прочитать эти данные?
Этот вопрос время от времени возникает на SO. Прочитайте веб-страницу ниже, «Последняя страница so_linger»
http://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable
Я думаю, что жюри все еще отсутствует, но я рекомендую серверу вызвать shutdown (), чтобы указать, что отправка завершена. Затем клиент закрывает свой сокет при recv (), возвращающем 0. Сервер закрывает свой сокет при recv, возвращающем 0 или по истечении разумного времени ожидания.