DatagramPacket
- это просто оболочка для сокета на основе UDP, поэтому применяются обычные правила UDP.
64 килобайта - теоретический максимальный размер полной дейтаграммы IP, но гарантированно будет маршрутизировано только 576 байтов. На любом данном сетевом пути связь с наименьшим максимальным передающим блоком будет определять фактический предел. (1500 байт, меньше заголовков - это общий максимум, но невозможно предсказать, сколько будет заголовков, поэтому безопаснее всего ограничить сообщения до 1400 байт.)
Если вы превысите ограничение MTU, IPv4 автоматически разбьет дейтаграмму на фрагменты и в конце соберет их, но только до 64 килобайт и только если все фрагменты пройдут. Если какой-либо фрагмент потерян или какое-либо устройство решит, что ему не нравятся фрагменты, то весь пакет будет потерян.
Как отмечено выше, невозможно заранее знать, каким будет MTU пути. Существуют различные алгоритмы для экспериментов, чтобы выяснить это, но многие устройства не реализуют должным образом (или сознательно игнорируют) необходимые стандарты, поэтому все сводится к пробам и ошибкам. Или вы можете просто угадать 1400 байт на сообщение.
Что касается ошибок, если вы попытаетесь отправить больше байтов, чем разрешено ОС, вы должны получить ошибку EMSGSIZE
или ее эквивалент. Если вы отправите меньше этого, но больше, чем позволяет сеть, пакет просто исчезнет.