Android - отправить максимальный размер буфера DatagramSocket - PullRequest
3 голосов
/ 27 октября 2011

У меня есть приложение, которое отправляет данные по UDP.Я пытаюсь выяснить, каков максимальный / оптимальный размер буфера отправки.Я успешно отправил пакет 2k, но большие пакеты были проблемой.Я попытался использовать getSendBufferSize, чтобы увидеть, каков размер буфера отправки.Возвращено 110592 байта.Когда я пытаюсь отправить что-нибудь близкое к нему, я не получаю сообщение об ошибке, но данные отправляются на сервер.

Как узнать размер разрешенного буфера отправки?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2013

DatagramPacket - это просто оболочка для сокета на основе UDP, поэтому применяются обычные правила UDP.

64 килобайта - теоретический максимальный размер полной дейтаграммы IP, но гарантированно будет маршрутизировано только 576 байтов. На любом данном сетевом пути связь с наименьшим максимальным передающим блоком будет определять фактический предел. (1500 байт, меньше заголовков - это общий максимум, но невозможно предсказать, сколько будет заголовков, поэтому безопаснее всего ограничить сообщения до 1400 байт.)

Ссылка: Максимальный размер буфера отправки / получения Java DatagramPacket (UDP)

0 голосов
/ 25 апреля 2017

Я также сталкивался с этой ошибкой, она должна быть 65535 - 28 = 65507 байт для размера буфера параметра метода отправки DatagramPacket.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...