Вы не можете. Сама природа TCP заключается в том, что данные разбиваются на пакеты. Продолжайте получать данные, пока не получите полное сообщение (каким бы оно ни было). Некоторые варианты для этого:
- Сначала отправьте размер сообщения перед самим сообщением.
- Закрыть соединение, когда сообщение отправлено (таким образом, клиент может читать до тех пор, пока соединение не будет закрыто)
- Добавить разделитель для обозначения конца сообщения
Как правило, мне не нравится последний вариант, так как он означает «понимание» сообщения во время его чтения, что может быть сложно - и может означать, что вам необходимо добавить escape-последовательности и т. Д., Если ваш разделитель может естественным образом встречаться в сообщении.