如何限制/限制Android设备上的WiFi数据速度?


9

我正在测试一个Android应用程序,需要了解该应用程序如何在不同的互联网速度下运行。一个测试用例的例子是:1.将最大带宽设置为20kbps并检查其工作方式;2.将最大带宽设置为50kbps并检查其工作方式...等等。

问题是-我不知道如何限制流量。

我正在使用WiFi和Charles Proxy。我使用Charles来检查应用程序的反应。不幸的是,我无法使用Charles进行节流-出于某种原因,Charles限制根本不会影响我的应用程序。

无论如何,有人可以帮助我解决这个问题吗?您对如何限制带宽有任何想法吗?

提前致谢。


听起来您最好使用支持节流的其他代理。
GAThrawn

Answers:


8

对于根植设备 (摘自曼苏尔对此帖子的回答

结帐BradyBound。这是系统范围的下载速度整形器/限制器。几件事要注意:

  • 该应用程序需要root访问权限。
  • 它通过使用丢弃数据包来工作iptables。这浪费了一些流量-多少取决于流量类型(例如,长时间运行的下载,Web浏览)。
  • 速率测量是根据数据包的数量而不是字节进行的,因此速度限制将不准确。
  • 这仅限制了TCP流量(丢弃UDP数据包没有任何意义)。

另请注意,我是此应用程序的作者。

编辑#1:

说明:

数据被分为称为数据包的小部分,以通过网络进行传输。

可以使用TCP(传输控制协议)UDP(用户数据报协议)进行传输

让我们举个例子:

假设您是服务器,我是主机,我想下载一个文件,因此首先我将向您发送一个请求,然后再处理,而不是发送整个文件,而是将大文件分割为小包。

现在,每个已创建的数据包将包含源IP(用户)和目标IP(矿)等信息,以及一些其他数据(序列号,数据大小,生存时间等)。

您将发送这些数据包,它们可以通过路由器到达我 并非所有数据包都必须通过同一路径到达我这里。他们可以通过不同的路线来找我。

当他们到达我时,TCP / UDP出现了。

如果您使用TCP进行传输,则当有数据包到达我时,将向您发送一封确认消息,说明已到达我的数据包。

UDP中缺少此功能。如果您使用的是UDP,则与TCP不同的是,它不会向您发送确认。这意味着,作为服务器,您不知道数据包是否到达我这里。万一在传输中丢失,它将永远丢失。

丢包

丢弃数据包意味着丢弃数据包。因此,基本上,当我丢弃您发送的数据包时,将向您发送一个确认(对于TCP),该数据包在传输中丢失,因此您将不得不再次发送它。

这样,在浪费整个文件的同时浪费了流量并限制了速度。

如果丢弃UDP数据包,则不会收到整个文件。这就是该应用无法控制UDP流量的原因。

是的,必须具有root特权,因为iptable只能通过超级用户访问来访问。


是否可以限制下载速度而不上传?
rakki s 2015年

似乎仅控制下载速度似乎很困难...但是一旦找到解决方法,我将尝试更新答案。
Ash-Ishh..2015年

是否完全不可能使该应用程序也可以在非根目录设备上运行?您说使用iptables丢弃数据包会浪费一些流量,这是什么意思?我知道速度限制不会完全准确,但我仍然需要非常准确,可以说有10%的偏差。您是什么意思,“这仅限制TCP通信(不限制UDP数据包)” ?,抱歉,我不知道TCP和UDP是什么。
rakki s 2015年

0

如果您使用的是Mac OS X,则可以使用“网络链接调节器”。

您可以从以下位置将其安装在xcode中:

Xcode>打开开发人员工具>更多开发人员工具

它将打开来自Apple的资源网页(您可能需要登录)。在资源列表中,搜索最新的“硬件IO工具”并下载。然后安装“网络链接调节器”,它将在您的mac偏好设置窗格中添加一个选项。

想法是让您的Mac进入以太网。在wifi上共享其连接。使用网络链接调节器限制流量。并在Mac wifi上连接您的android。

编辑:似乎鱿鱼缓存支持网络节流。 http://www.tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html


0

您可以使用路由器控制带宽(如果支持)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.