Этот вопрос основан на ложной предпосылке.В C подпись для системного вызова recv
:
ssize_t recv(int s, void *buf, size_t len, int flags);
Обратите внимание, что вы передаете указатель на буфер и длину этого буфера.Затем в ручном вводе говорится:
Если сообщение слишком длинное, чтобы поместиться в предоставленный буфер, лишние байты могут быть отброшены в зависимости от типа сокета, из которого получено сообщение.
Другими словами, API C ожидает, что вызывающая сторона выделит «достаточно большой» буфер, и может обрезать сообщения, которые длиннее ... как в Java.