recvfrom
всегда будет возвращать ровно один пакет для UDP. Пакеты UDP могут иметь размер до 64 КБ, отдавать или принимать для нескольких байтов заголовка. На практике большинство протоколов UDP никогда не отправляют столько данных в одном пакете. Таким образом, размер буфера, передаваемый в recvfrom
, может быть намного меньше в зависимости от того, что предписывает ваш протокол.
Для TCP вы обычно используете recv
, а не recvfrom
для чтения входящих данных из подключенного сокета. Многие отмечают, что TCP - это потоковый протокол, а не протокол сообщений / пакетов, такой как UDP. Таким образом, recv
вернет вам неопределенное c количество байтов между 1 и размером буфера, передаваемого самому вызову recv
. Всегда проверяйте возвращаемое значение из recv
вызова - не гарантируется, что вы получите конкретный счетчик байтов.