Регулярная отправка множества UDP-дейтаграмм в потоке иногда приводит к микропакетам - PullRequest
0 голосов
/ 24 мая 2018

Мы пытаемся отправить UDP-датаграммы в Android 7.0 по Wi-Fi на сервер.Размер датаграммы составляет 23 байта, а частота составляет около 15 миллисекунд.

У нас есть очередь, в которую мы помещаем ByteArrays.Другой Sending-Thread извлекает эти массивы из потоковой безопасной очереди и отправляет их в Datgrams через Datagramsocket на сервер.Метод socket.send () вызывается каждые 10-18 мс.

Wireshark на стороне сервера получает большинство пакетов в хорошем регулярном стабильном интервале примерно 15 мс, но иногда (в основном каждые 150-300 пакетов) наблюдается задержка 1-3 цикла отправки и затем задержкапакеты падают "пачкой" после паузы 30-60 мс.

Задержки увеличиваются и появляются значительно чаще, если во время выполнения мы пытаемся создать нагрузку на телефон Android с помощью интенсивных по сети задач (когда мы запускаем приложение WiFi-Analyzer).

Увеличение ThreadPriority Sender-Thread, похоже, не влияет на проблему.

Если кто-нибудь может помочь мне с некоторыми советами о том, как получить больший контроль над сетевым интерфейсом.процесс отправки, чтобы уменьшить количество посылок и получить более стабильный регулярный интервал отправки, я и мои друзья были бы очень, очень благодарны.

...