|
Модераторы: feodorv |
|
nic1986 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 6.7.2009 Репутация: нет Всего: 1 |
Если размер датаграммы меньше длины приемного буфера, то recvfrom её считает в буфер,если он был вызван с флагом MSG_WAITALL ? Или он тупо будет ждать пока буфер сокета заполниться до нужного обьема?
например: 1.выставить размер буфера сокета 64к 2.вызвать recvfrom с MSG_WAITALL,с len буфера тоже 64к 3.приходит датаграмма 16к recvfrom будет ждать пока придет еще 3 по 16к , или он считает те 16к и завершиться? |
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Просто сходу:
Максимальный размер датаграммы естественным образом ограничен:
Более того, датаграмма принимается и передаётся пользователю исключительно целиком. Если recvfrom отработал без ошибок и принял 16K (при большем заданном размере пользовательского буфера), то это значит, что датаграмма именно такого размера и была послана. Две датаграммы за один вызов recvfrom получить нельзя. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
nic1986 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 6.7.2009 Репутация: нет Всего: 1 |
Спасибо, это и хотел узнать. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |