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