| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > recvfrom(UDP) и MSG_WAITALL.Вопрос. |
| Автор: nic1986 12.12.2015, 00:57 |
| Если размер датаграммы меньше длины приемного буфера, то recvfrom её считает в буфер,если он был вызван с флагом MSG_WAITALL ? Или он тупо будет ждать пока буфер сокета заполниться до нужного обьема? например: 1.выставить размер буфера сокета 64к 2.вызвать recvfrom с MSG_WAITALL,с len буфера тоже 64к 3.приходит датаграмма 16к recvfrom будет ждать пока придет еще 3 по 16к , или он считает те 16к и завершиться? |
| Автор: feodorv 12.12.2015, 12:31 | ||||
Просто сходу:
Максимальный размер датаграммы естественным образом ограничен:
Более того, датаграмма принимается и передаётся пользователю исключительно целиком. Если recvfrom отработал без ошибок и принял 16K (при большем заданном размере пользовательского буфера), то это значит, что датаграмма именно такого размера и была послана. Две датаграммы за один вызов recvfrom получить нельзя. |