Нет обоим.В протоколе TCP нет такого понятия, как EOF.
Если вы хотите определить его в протоколе приложения, вы можете сделать это (и должны), но read
не остановится или не закроетсясокет, когда он его видит.
TCP - чисто потоковая база.Извлечение «пакетов» данных зависит от приложения.
Если вам нужно отправить только одно сообщение через TCP-соединение, вы можете закрыть сокет на стороне отправителя, когда закончите отправку.Тогда принимающая сторона read
будет считывать только то, что было отправлено, и возвращает 0
, когда для чтения больше не осталось.Но вам придется заново открыть новое соединение, чтобы отправить следующее сообщение в этом случае.