Я тестирую приложение для Android, и мне нужно понять, как оно работает на разных скоростях интернета. Пример тестового примера: 1. установите максимальную пропускную способность 20 кбит / с и проверьте, как она работает; 2. установите максимальную пропускную способность 50 кбит / с и проверьте, как она работает ... и т. Д.
Проблема в том, что я не знаю, как ограничить трафик.
Я использую WiFi и Charles Proxy . Я использую Чарльза, чтобы проверить, как приложение реагирует. К сожалению, я не могу регулировать использование Charles - по какой-то причине ограничения Charles не влияют на мое приложение вообще.
В любом случае, кто-нибудь может мне помочь с этой проблемой? У вас есть идеи, как ограничить пропускную способность?
Заранее спасибо.
wi-fi
data-monitoring
bandwidth
Максимум
источник
источник
Ответы:
ДЛЯ УСТРОЕННОГО УСТРОЙСТВА (скопировано из ответа Мансура на этот пост )
Редактировать № 1:
Объяснение:
Данные делятся на небольшие части, называемые пакетами, для передачи по сети.
Он может быть передан с использованием TCP (протокол управления передачей) или UDP (протокол дейтаграмм пользователя)
Давайте возьмем пример:
Предположим, что вы - сервер, а я - хост, и я хочу загрузить файл, поэтому сначала я отправлю вам запрос на него, после чего вы обработаете его, и вместо отправки всего файла вы разделите большой файл на маленькие пакеты.
Теперь каждый созданный пакет будет содержать такую информацию, как IP-адрес источника (ваш) и IP-адрес назначения (мой), а также некоторые дополнительные данные (номер последовательности, размер данных, время жизни и т. Д.)
Вы отправите эти пакеты, и они могут связаться со мной через маршрутизаторы. Не обязательно, чтобы все пакеты приходили ко мне по одному и тому же маршруту. Они могут прийти ко мне по различным доступным маршрутам.
Когда они достигают меня, появляется TCP / UDP.
Если вы использовали TCP для передачи, когда пакет достигает меня, вам отправляется подтверждение о том, что пакет достиг меня.
Эта функция отсутствует в UDP. Если вы использовали UDP, в отличие от TCP, он не отправляет вам подтверждения. Это означает, что вы, как сервер, понятия не имеете, достигают ли меня пакеты или нет. В случае, если он потерян в передаче, он потерян навсегда.
Падающие пакеты
Отбрасывание пакетов означает отбрасывание пакетов. Поэтому, в принципе, когда я отброшу отправленный вами пакет, вам будет отправлено подтверждение (в случае TCP), что пакет был потерян при передаче, поэтому вам придется отправить его снова.
Таким образом, это тратит трафик и ограничивает скорость, в то же время я получаю весь файл.
Если я отброшу UDP-пакеты, я не получу весь файл. По этой причине приложение не контролирует трафик UDP.
И да, привилегия root является обязательной, поскольку доступ к iptable возможен только с правами суперпользователя.
источник
Если вы используете Mac OS X, вы можете использовать «Network Link Conditioner».
Вы можете установить его в xcode из:
Xcode> Open Developer Tool> Дополнительные инструменты разработчика
Он откроет веб-страницу ресурсов от Apple (вам может потребоваться войти в систему). В списке ресурсов найдите последние «Аппаратные средства ввода-вывода» и загрузите их. Затем установите «Network Link Conditioner», он добавит параметр в вашу панель настроек Mac.
Идея состоит в том, чтобы получить ваш Mac на Ethernet. Поделитесь своей связью по wifi. Ограничьте трафик с помощью Network Link Conditionner. И подключите свой андроид на своем Mac Wi-Fi.
редактировать: кажется, Squid-кеш поддерживает регулирование сети. http://www.tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html
источник
Вы можете управлять пропускной способностью с вашим маршрутизатором (если он поддерживает его).
источник