Intereting Posts
Получение Java-привязки для запуска Dbus на Android Как насмехаться над картиной в Android Emulator Camera? Установить путь сборки в Eclipse для программы ndk Как управлять Loopers и Threads (нить не умирает больше!) Что такое Dalvik и dalvik-cache? API-интерфейс Google Calendar OAuth2 на Android-соте Android.content.Context.getPackageName () 'для ссылки на нулевой объект Как читать несколько кодов qr с одного изображения с помощью библиотеки zxing Почему моя производительность увеличивается при касании экрана? Есть ли способ вызова «getBackgroundColor»? Радиотображение Android на 90 градусов приводит к раздавленному изображению. Нужен настоящий поворот между портретом и пейзажем Eclipse import google-play-services_lib отображает ошибку в значениях ViewRootImpl: ViewPostImeInputStage processPointer 0 на OnItemClick из списка в android Изменение расстояния между линиями EditText и позиция курсора по строке Обработка и сглаживание IllegalStateException («состояние сохранения сбрасывания: активный $ Фрагмент очистил индекс: -1»)

Android – Как измерить качество полосы пропускания в локальной сети одним телефоном

Наше приложение служит контроллером для наших устройств с поддержкой Wi-Fi. Иногда, когда трафик локальной сети ужасен, устройствам трудно получить команду, которую отправляет приложение контроллера. Если это произойдет, мы должны уведомить пользователя о том, что сетевой трафик ужасен, и попросить пользователя переключиться на другой маршрутизатор.

У нас есть сердцебиение с устройствами, которые мы будем контролировать. Однако проблема может возникнуть, даже не достигнув этой стадии. Я имею в виду, что, прежде всего, наше приложение должно искать устройства, отправив UDP-пакеты в адрес многоадресной рассылки. Затем, после получения ответа от этих устройств, мы создаем соединение между ними. Это время, когда мы можем получить сердцебиение. Проблема, о которой я говорю, даже на этапе поиска устройств, если сетевой трафик ужасен, наше устройство не сможет получать пакеты UDP, которые мы отправили.

До сих пор это были наши попытки:

  1. Запуск HTTP-сервера и клиента

Мы начали легкий HTTP-сервер, разместили там файл. Затем мы создаем клиент и загружаем этот файл и отслеживаем скорость. Но это, похоже, не работает, потому что есть петля. Устройство видит, что обе стороны (http-клиент и сервер) имеют одну и ту же зону (возможно, этот термин неверен), поэтому, возможно, загрузка даже не прошла через маршрутизатор.

  1. Интегрируйте iPerf в наше приложение:

Недостатком этого решения является то, что устройство должно быть внедрено. Но мы все же попытались решить проблему iPerf. Мы протестировали его как с клиентом, так и с сервером на одном устройстве. Но скорость все же не меняется. Если мы тестируем на двух устройствах: один, как сервер, другой как клиент, то мы получаем хороший тест скорости. Однако мы не можем, как наш клиент, использовать два телефона для нашего продукта, и мы также не можем попросить их укрепить свой телефон.

  1. Использование библиотеки с открытым исходным кодом для проверки скорости соединения, предоставляемой Facebook.

В github мы обнаружили библиотеку с открытым исходным кодом, которая проверяет качество скорости соединения. Однако для проверки скорости требуется подключение к Интернету. Но наш продукт не требует от пользователя подключения к Интернету. Пользователю просто нужен маршрутизатор и приложение. Поэтому, к сожалению, мы не можем использовать это решение.

  1. Пробовал искать, как отключить loopback при загрузке файла с того же устройства.

Основываясь на нашей первой попытке, которая является единственным решением, которое мы построили сами. Мы попытались проверить документацию, если в любом случае отключить loopback при загрузке файла с того же устройства. К сожалению, мы не получили хорошего результата.

Итак, наш вопрос:

  1. Если наша первая попытка близка, то как мы можем отключить эту функцию loopback, чтобы мы могли правильно контролировать скорость загрузки?

  2. Если наша первая попытка недостаточно хороша, тогда есть ли другой способ, который мы можем сделать, чтобы проверить пропускную способность локально?

Примечание. Не должно быть никакого интернет-соединения, и должно использоваться не более одного телефона.

Заранее спасибо!

Solutions Collecting From Web of "Android – Как измерить качество полосы пропускания в локальной сети одним телефоном"

Хотя это частичное решение, это может помочь проверить:

InetAddress.getByName(router).isReachable(timeOut) 

Как поясняется здесь , это не всегда будет работать, но если это доказывает, что это не сетевая проблема.

Также стоит приложить http и https-запрос к IP-адресу маршрутизатора, поскольку большинство коммерческих маршрутизаторов предоставляют веб-интерфейс.

Сравнение последующих периодов ответа может помочь вам оценить состояние сети.