c ++ posix сокеты recv функциональность

У меня есть вопрос, возможно, нубистский, я осмотрелся, но не увидел прямого ответа на него и подумал, что я мог бы получить быстрый ответ здесь. В простом цикле выбора клиент / сервер TCP / IP с использованием bsd-сокетов, если клиент отправляет два сообщения, которые одновременно поступают на сервер, один вызов на recv на сервере возвращает оба сообщения, объединенные в буфере, или вызывает recv каждый отчетливое прибывающее сообщение будет прочитано отдельно?

Я спрашиваю, потому что я работаю в среде, где я не могу сказать, как клиент строит свои сообщения для отправки. Обычно recv сообщает, что считываются 12 байтов, затем 915, затем 12 байтов, затем 915 и т. Д. В таком чередующемся паттерне от 12 до 915 ... но иногда он сообщает о 927 (что составляет 915 + 12). Я думал, что либо клиент связывает часть своей информации вместе, прежде чем отправить ее на сервер, либо что сообщения приходят до того, как вызывается recv, а затем recv извлекает все ожидающие байты одновременно. Поэтому я хотел убедиться, что правильно понял поведение recv. Я думаю, что, возможно, я что-то упустил здесь в моем понимании, и я надеюсь, что кто-то может указать это, спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос