c ++ posix sockets recv funcionalidad

Tengo una pregunta tal vez noobish, he mirado a mi alrededor pero no he visto una respuesta directa que la aborde y pensé que podría obtener una respuesta rápida aquí. En un simple bucle de selección de cliente / servidor TCP / IP que usa sockets bsd, si un cliente envía dos mensajes que llegan simultáneamente a un servidor, una llamada a recv en el servidor devolverá ambos mensajes agrupados en el búfer, o recv obligará a cada uno ¿Mensaje distinto para ser leído por separado?

Lo pregunto porque estoy trabajando en un entorno en el que no puedo decir cómo el cliente está creando sus mensajes para enviar. Normalmente recv informa que se leen 12 bytes, luego 915, luego 12 bytes, luego 915, y así sucesivamente en un patrón alterno de 12 a 915 ... pero a veces informa de 927 (que es 915 + 12). Estaba pensando que, o bien el cliente está agrupando parte de su información antes de enviarla al servidor, o que los mensajes llegan antes de que se invoque recv y luego recv extrae todos los bytes pendientes simultáneamente. Así que quería asegurarme de que entendía correctamente el comportamiento de recv. Creo que tal vez me esté perdiendo algo aquí, y espero que alguien pueda señalarlo, ¡gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta