Ответ 1
Это также хороший ресурс для определения пропускной способности на одном телефоне.
Наше приложение служит контроллером для наших устройств с поддержкой Wi-Fi. Иногда, когда трафик локальной сети ужасен, устройствам трудно получить команду, которую отправляет приложение контроллера. Если это произойдет, мы должны уведомить пользователя о том, что сетевой трафик ужасен, и попросить пользователя переключиться на другой маршрутизатор.
У нас есть сердцебиение с устройствами, которые мы будем контролировать. Однако проблема может возникнуть, даже не достигнув этой стадии. Я имею в виду, что, прежде всего, наше приложение должно искать устройства, отправив UDP-пакеты в адрес многоадресной рассылки. Затем, после получения ответа от этих устройств, мы создаем соединение между ними. Это время, когда мы можем получить сердцебиение. Проблема, о которой я говорю, даже на этапе поиска устройств, если сетевой трафик ужасен, наше устройство не сможет получать пакеты UDP, которые мы отправили.
До сих пор это были наши попытки:
Мы начали легкий HTTP-сервер, разместили там файл. Затем мы создаем клиент и загружаем этот файл и отслеживаем скорость. Но это, похоже, не работает, потому что есть петля. Устройство видит, что обе стороны (http-клиент и сервер) имеют одну и ту же зону (возможно, этот термин неверен), поэтому, возможно, загрузка не прошла даже через маршрутизатор.
Недостатком этого решения является то, что устройство должно быть внедрено. Но мы все же попробовали решение iPerf. Мы протестировали его как с клиентом, так и с сервером на одном устройстве. Но скорость все же не меняется. Если мы протестируем на двух устройствах: один, как сервер, другой как клиент, тогда мы получим хороший тест скорости. Однако мы не можем, как наш клиент, использовать два телефона для нашего продукта, и мы также не можем просить их укоренить их телефон.
Мы обнаружили libv с открытым исходным кодом в github, который проверяет качество скорости соединения. Однако для проверки скорости требуется подключение к Интернету. Но наш продукт не требует от пользователя подключения к Интернету. Пользователю просто нужен маршрутизатор и приложение. Поэтому, к сожалению, мы не можем использовать это решение.
Основываясь на нашей первой попытке, которая является единственным решением, которое мы построили сами. мы попытались проверить документацию, если в любом случае отключить loopback при загрузке файла с того же устройства. К сожалению, мы не получили никакого хорошего результата.
Итак, наш вопрос:
Если наша первая попытка близка, то как мы можем отключить эту функцию loopback, чтобы мы могли правильно контролировать скорость загрузки?
Если наша первая попытка недостаточно хороша, тогда есть ли другой способ, который мы можем сделать, чтобы локально проверить пропускную способность?
Примечание. Не должно быть никакого интернет-соединения, и должно использоваться не более одного телефона.
Спасибо заранее!
Это также хороший ресурс для определения пропускной способности на одном телефоне.
Хотя это частичное решение, это может помочь проверить:
InetAddress.getByName(router).isReachable(timeOut)
Как объясняется здесь, он не всегда будет работать, но если он докажет, что это не сетевая проблема.
Также стоит приложить http и https-запрос к IP-адресу маршрутизатора, поскольку большинство коммерческих маршрутизаторов предоставляют веб-интерфейс.
Сравнение последующих откликов может помочь вам определить состояние сети.