Каков рекомендуемый способ «изящно» закрыть сокет TCP?
Я узнал, что закрытие () перед чтением () всех оставшихся данных в моем буфере хоста может вызвать проблемы для удаленного хоста (он может потерять все данные в своем буфере приема, которые были проверены, но не пока читал его по заявке). Это правильно?
Что было бы хорошим подходом, чтобы избежать этой ситуации? Есть ли какой-нибудь способ сообщить API, что я на самом деле не забочусь о потере данных из-за того, что игнорирую оставшиеся буферизованные данные и закрываю сокет?
Или я должен рассмотреть проблему на уровне протокола приложения и использовать какой-то неявный или явный сигнал «конец передачи», чтобы сообщить другой стороне, что безопасно закрыть сокет для чтения?