我知道这是个奇怪的问题。因为我通常基于“假设”所有用户的网络连接都很慢来开发应用程序。但是,有没有人认为有一种方法可以通过编程模拟慢速互联网连接,这样我就可以“看到”应用程序在不同“连接速度”下的表现?
我不担心使用哪种语言。我不是在寻找代码示例或其他东西,只是对它背后的逻辑感兴趣。
我知道这是个奇怪的问题。因为我通常基于“假设”所有用户的网络连接都很慢来开发应用程序。但是,有没有人认为有一种方法可以通过编程模拟慢速互联网连接,这样我就可以“看到”应用程序在不同“连接速度”下的表现?
我不担心使用哪种语言。我不是在寻找代码示例或其他东西,只是对它背后的逻辑感兴趣。
当前回答
使用具有节流功能的web调试代理,如Charles或Fiddler。
你会发现它们在一般的web开发中很有用。主要的区别是Charles是共享软件,而Fiddler是免费的。
其他回答
Mac OSX从10.10开始就有了一个名为Murus Firewall的应用程序,它作为pf的GUI,替代了ipfw。
它适用于系统范围或特定领域的节流。我只能用它把我的下载速度在300Kbps到30Mbps之间滑动,以测试流媒体视频播放器是如何调整的。
我使用http://www.netlimiter.com/,它工作得很好。不仅限制单个进程的速度,而且还显示实际的传输速率。
从Chrome 38开始,你可以在没有任何插件的情况下做到这一点。只需点击inspect element(或F12热键),然后点击“toggle device mod”,你会看到如下内容:
在许多其他功能中,它允许您模拟特定的互联网连接(3G, GPRS)
另外,对于那些试图限制上传速度的人。遗憾的是,目前这是不可能的。
P.S.2现在你不需要切换任何东西。节流面板可从网络面板。
请注意,在单击No throttling时,您可以创建自定义节流选项。
您可以使用NetEm(网络仿真)作为代理服务器来模拟许多网络特征(速度、延迟、包丢失等)。它使用iproute2包控制网络,在大多数Linux发行版的内核中都启用了它。
它由tc命令行应用程序控制(来自iproute2包),但也有一些用于NetEm的web界面gui,例如PHPnetemGUI2。
优点是,正如我所写的,它不仅可以模拟不同的网络速度,而且还可以模拟数据包丢失、复制和/或损坏、随机或定义的延迟等,所以除了缓慢的连接之外,您还可以模拟各种性能较差的网络和传输错误。
对于您的应用程序,它是绝对透明的,您可以配置操作系统使用NetEm作为代理服务器,因此来自该机器的所有连接都将通过它路由。或者,您可以只配置一个特定的应用程序来使用该代理。
我一直在用它在各种模拟的低性能网络上测试Android应用程序的性能。
在Linux机器上你可以使用wondershaper
apt-get install wondershaper
$ sudo wondershaper {interface} {down} {up}
{down}和{up}是KPBS中的带宽
例如,如果你想限制接口eth1的上行带宽为256kbps,下行带宽为128kbps,
$ sudo wondershaper eth1 256 128
为了清除极限,
$ sudo wondershaper clear eth1