Нет, такой гарантии нет.Фактически, по умолчанию, несколько последовательных коротких записей будут объединены в один сетевой пакет, который будет получен в одном recv()
.(Это известно как алгоритм Нейгла .)
Если данные, которые вы передаете, должны быть сформированы определенным образом, вам нужно будет включить данные, чтобы определить это кадрирование как частьданные, которые вы передаете.Один простой подход заключается в разделении ваших данных специальным символом, например, новой строкой или нулевым байтом;другой - передавать длину каждого кадра перед его данными.(Существует много других способов кадрировать данные; это всего лишь несколько идей для начала.)