я использую recvfrom
получить многоадресные данные udp. Насколько я знаю, он получает не более 1 дейтаграммы в вызове (это правильно?). Какой размер буфера будет достаточно для такого вызова тогда? Я предполагаю, что это должно быть ~ MTU UDP для этой машины, но как я могу узнать это во время выполнения?
Я не хочу «переоценивать» размер буфера, потому что на самом деле у меня есть кольцевые буферы под сценой, и я не хочу тратить слишком много дополнительной памяти.
Максимальный размер датаграммы UDP составляет 64 КБ. Если вы не выделяете много буферов, просто используйте этот размер.
Максимальный размер IPv4 UDP датаграмма полезная нагрузка составляет 65507 байт, но вы не получите их, кроме как через петлю. Лучшее, что вы можете сделать в реальной сети — это MTU минус 28. Общепринятый практический предел без фрагментации составляет 534 байта.