Как ограничить скорость передачи данных WiFi на моем устройстве Android?

Я тестирую приложение для Android и должен понимать, как приложение работает на разных интернет-скоростях. Примером тестового примера является: 1. установите максимальную пропускную способность до 20 кбит /с и проверьте, как она работает; 2. установите максимальную пропускную способность до 50 кбит /с и проверьте, как она работает ... и т. Д.

Проблема в том, что я не знаю, как ограничить трафик.

Я использую WiFi и Charles Proxy . Я использую Charles, чтобы проверить, как приложение реагирует. К сожалению, я не могу дросселировать с помощью Чарльза - по какой-то причине пределы Чарльза вообще не влияют на мое приложение.

В любом случае, может кто-нибудь помочь мне с этой проблемой? Есть ли у вас идеи о том, как ограничить пропускную способность?

Спасибо заранее.

8 голосов | спросил Max 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 25 Sep 2013 01:32:59 +0400 2013, 01:32:59

3 ответа


8

ДЛЯ ЗАМОРОЖЕННОГО УСТРОЙСТВА (скопировано из ответа Мансура на этот пост )

  

Оформить заказ BradyBound . Это системный широкоформатный загрузчик /ограничитель скорости загрузки. Мало что нужно отметить:

     
  • Приложение требует доступа root.
  •   
  • Он работает, отбрасывая пакеты с помощью iptables. Это тратит некоторый трафик - насколько это зависит от типа трафика (например, длительная загрузка, просмотр веб-страниц).
  •   
  • Измерение скорости производится числом пакетов вместо байтов, поэтому ограничение скорости не будет точным.
  •   
  • Это ограничивает только TCP-трафик (нет смысла отказываться от пакетов UDP).
  •   

Обратите внимание, что я автор этого приложения.

Изменить # 1:

Объяснение:

Данные делятся на небольшие части, называемые Пакеты , которые будут передаваться по сети.

Он может передаваться с использованием протокола TCP (протокол управления передачей) или UDP (User Datagram Protocol)

Возьмем пример:

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

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

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

Когда они дойдут до меня, на экране появится TCP /UDP.

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

Эта функция отсутствует в UDP. Если вы использовали UDP, в отличие от TCP, он не отправляет вам подтверждения. Это означает, что вы, как сервер, понятия не имеете, доходят ли пакеты до меня или нет. Если он потерян в передаче, он потерян навсегда.

Падение пакетов

Отбрасывание пакетов означает отбрасывание пакетов. Поэтому, в основном, когда я отброшу отправленный вами пакет, вам будет отправлено подтверждение (в случае TCP), что пакет был потерян при передаче, поэтому вам придется отправить его снова.

Таким образом, он тратит трафик и ограничивает скорость, в то же время я получаю весь файл.

Если я отброшу UDP-пакеты, я не получу весь файл. Именно по этой причине приложение не контролирует трафик UDP.

И да, root-привилегия является обязательной, поскольку доступ к iptable доступен только с доступом суперпользователя.

ответил Ash-Ishh.. 29 MonEurope/Moscow2014-12-29T13:27:00+03:00Europe/Moscow12bEurope/MoscowMon, 29 Dec 2014 13:27:00 +0300 2014, 13:27:00
0

Если вы находитесь под Mac OS X, вы можете использовать «Network Link Conditioner».

Вы можете установить его в xcode из:

Xcode> Открыть инструмент разработчика> Дополнительные инструменты для разработчиков

Он откроет веб-страницу ressources из apple (вам, возможно, потребуется войти в систему). В списке ресурсов найдите последние «Hardware IO Tools» и загрузите его. Затем установите «Network Link Conditioner», он добавит опцию в вашу панель предпочтений mac.

Идея состоит в том, чтобы получить ваш mac в ethernet. Поделитесь своим подключением к Wi-Fi. Ограничьте трафик с помощью Network Link Conditionner. И соедините свой Android с вашим Mac.

edit: кажется, что поддержка squid-cache поддерживает дросселирование сети. http://www.tldp.org/HOWTO/Bandwidth-Limiting-HOWTO /index.html

ответил HiroKenshin 10 J0000006Europe/Moscow 2014, 19:10:52
0

Вы можете контролировать пропускную способность вашего маршрутизатора (если он поддерживает его).

ответил Dain Binder 18 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 18 Sep 2014 09:00:16 +0400 2014, 09:00:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132