Я понимаю, что макс. размер буфера по умолчанию, который я могу использовать с этими функциями, 65507 (5535 - заголовок IPv4 - заголовок UDP). Однако есть ли способ изменить это? Я должен смочь, отправляют большие буферные ~66000 байтов. Я пытался использовать setsockopt () функция, но это, казалось, не работало.
Спасибо!
кстати, потому что оборачивающий IP-пакет может быть фрагментирован из-за ограничений MTU . Каждый из фрагментов может потеряться, а в UDP нет механизма восстановления. Таким образом, хотя теоретический предел полезной нагрузки UDP составляет прибл. 64 КБ, практический предел составляет около 1 КБ.
No.
UDP предоставляет датаграмму только как часть данных IP-пакета, IP-пакет имеет поле длиной 16 бит, что ограничивает данные до 2^16 байт, включая заголовки, или 65507 байт для части данных UDP (при условии отсутствия опций ipv4), нет никакого способа обрабатывать большие пакеты с UDP, кроме разделения их на несколько пакетов и обработки повторной сборки и т. Д. Самостоятельно.
Спецификация UDP дает вам 16 бит в заголовке UDP для размера пакета, что означает, что вы не можете отправить больше чем 65к сразу. Вы не можете это изменить.
Вы должны разбить данные на несколько пакетов. Использование TCP вместо UDP значительно упростит задачу, поскольку полнота и порядок получения гарантированы.