Единственное, что гарантирует уровень TCP, заключается в том, что получатель получит:
Нет никаких гарантий относительно того, как байты могут быть разделены на «пакеты». Все, что вы могли бы прочитать о MTU, фрагментации пакетов, максимальном размере сегмента или любом другом, находящемся ниже уровня сокетов TCP, не имеет значения. TCP предоставляет службу потока только .
Что касается вашего вопроса, это означает, что получатель может получить первые 500 байт, а затем следующие 500 байт. Или, получатель может получать данные по одному байту за раз, если это то, что он просит. Именно по этой причине функция recv()
принимает параметр, указывающий, сколько данных в возвращает , вместо того, чтобы сообщать вам , насколько большой пакет .