¿La configuración del búfer de recepción del socket en un número específico de bytes se correlaciona directamente con la cantidad de mensajes de tamaño que se pueden almacenar?
Ejemplo:
Si un mensaje de 100 bytes se envía continuamente a través de UDP a un búfer de socket establecido en 4,000 bytes, ¿puedo esperar que el búfer pueda contener 40 mensajes?
Pensé que establecer el tamaño del búfer, así:
int size = 4000; setsockopt(id, SOL_SOCKET, SO_RCVBUF, (char *)&size, sizeof(size));y dejar que el búfer se llene con los paquetes entrantes daría como resultado un búfer que contiene 40 mensajes.
Después de apagar el remitente UDP y procesar el búfer, eso no es lo que he observado.
A pesar de que mis mensajes tienen 100 bytes, parece que un búfer de 4,000 bytes solo puede contener unos 4 mensajes.
¿Cómo es posible que los mensajes de 100 bytes estén ocupando 1,000 bytes en el búfer?
¿Esto tiene sentido? ¿Qué está causando esto y cómo puedo calcular un tamaño de búfer de acuerdo con la cantidad de mensajes que se pueden almacenar?
editar: la pregunta duplicada no resuelve mi problema.
El usuario allí estaba llamando a setsockopt incorrectamente.
Estoy tratando de encontrar documentación que describa la relación entre un búfer de recepción de socket y la cantidad de mensajes de tamaño que realmente se pueden retener.