Заставить андроид отправлять UDP-пакеты немедленно?

Я экспериментирую с подключением моего Galaxy Ace к ноутбуку через WiFi. Оба устройства подключены к маршрутизатору через WiFi, и обе стороны используют Java.

После того, как TCP-соединение время от времени давало мне очень высокие эхо-запросы, я решил основать соединение на UDP, чтобы иметь возможность контролировать, когда пакеты действительно отправляются.

Однако, похоже, что Android все еще буферизует пакеты UDP и не отправляет их немедленно. Это или полностью отключает Wi-Fi, если исходящие данные не передаются в течение некоторой доли секунды.

Сначала я проверял телефон с нерегулярными интервалами примерно раз в секунду, многократно отправляя запросы ping, пока не получен ответ (покрывающий потерю пакетов в UDP):

    computer -> phone -> computer
    Pinging 192.168.1.40: 148.05968ms
    Pinging 192.168.1.40: 524.41156ms
    Pinging 192.168.1.40: 705.8688ms
    Pinging 192.168.1.40: 3.705367ms
    Pinging 192.168.1.40: 3.872159ms
    Pinging 192.168.1.40: 549.4541ms
    Pinging 192.168.1.40: 479.29843ms
    Pinging 192.168.1.40: 3.89936ms
    Pinging 192.168.1.40: 428.85876ms
    Pinging 192.168.1.40: 739.28125ms

Я обошел эту проблему, отправляя пакеты с телефона на компьютер только с одним байтом данных каждые 100 мс, ничего не меняя в этой процедуре:

    computer -> phone -> computer
    Pinging 192.168.1.40: 4.147753ms
    Pinging 192.168.1.40: 3.738213ms
    Pinging 192.168.1.40: 14.133768ms
    Pinging 192.168.1.40: 4.470561ms
    Pinging 192.168.1.40: 3.628386ms
    Pinging 192.168.1.40: 3.898334ms
    Pinging 192.168.1.40: 3.512401ms
    Pinging 192.168.1.40: 7.907006ms
    Pinging 192.168.1.40: 5.234216ms
    Pinging 192.168.1.40: 5.639137ms

Для моего приложения крайне важно иметь низкую задержку, поэтому я буду продолжать отправлять пустые пакеты, подобные этой (по крайней мере, до тех пор, пока реальные данные не будут переданы). Мне интересно, смогу ли я заставить Android реагировать как можно быстрее, без необходимости разбрасывать бесполезные данные по всей сети. Итак, есть ли более элегантное решение?

Кстати, я предполагаю, что проблема в смартфоне, а не в компьютере, хотя это также может быть компьютер, ожидающий входящие пакеты и затем отправляющий свои пакеты. Из того, что я знаю о сети, это очень маловероятно.

Спасибо за вашу помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос