我知道这是一个奇怪的问题 . 因为我通常根据“假设”开发应用程序,即所有用户的互联网连接都很慢 . 但是,是否有人认为有一种方法可以以编程方式模拟慢速互联网连接,因此我可以“看到”应用程序在各种“连接速度”下的表现如何?
我并不担心使用哪种语言 . 而且我不是在寻找代码示例或任何东西,只是对它背后的逻辑感兴趣 .
此外,为了模拟某些* nixes上的慢速连接,您可以尝试使用ipfw . 更多信息由Ben Newman对此Quora的回答提供question
使用具有限制功能的Web调试代理,如Charles或Fiddler .
一般来说,你会发现它们是有用的Web开发 . 主要区别在于Charles是共享软件,而Fiddler是免费的 .
使用像TCPMon这样的工具 . 它可以伪造慢速连接 .
基本上,您请求它完全相同的东西,它只是将完全相同的请求转发到真实服务器,然后只用设定的字节数延迟响应 .
自10.10以来Mac OSX有一个名为Murus Firewall的应用程序,它作为pf的GUI,替换为ipfw .
它适用于系统范围或特定于域的限制 . 我只能用它来下载300Kbps到30Mbps的下载速度来测试流式视频播放器的调整方式 .
还有另一个名为WIPFW的工具 - http://wipfw.sourceforge.net/
这是一个有点旧的学校,但你可以用它来模拟一个较慢的连接 . 它是基于Windows的,该工具允许管理员监控路由器从某台计算机获得的流量,或者它正在转发的WWW流量 .
Google recommends:
在OSX上
Network Link Conditioner在Windows上
Clumsy
Dummynet在Linux上
我使用的是http://www.netlimiter.com/,效果非常好 . 不仅限制单个过程的速度,还显示实际传输速率 .
在Linux机器上你可以使用 wondershaper
wondershaper
apt-get install wondershaper $ sudo wondershaper {interface} {down} {up}
和是kpbs中的带宽
因此,例如,如果要将接口eth1的带宽限制为256kbps上行链路和128kbps下行链路,
$ sudo wondershaper eth1 256 128
要清除限制,
$ sudo wondershaper clear eth1
有一些TCP代理,比如iprelay和Sloppy,它们进行带宽整形以模拟慢速连接 . 您还可以使用ipfw和iptables等IP过滤工具进行带宽整形和模拟丢包 .
您可以尝试Dummynet,它可以模拟队列和带宽限制,延迟,数据包丢失和多路径效应
如果您正在运行Windows,fiddler是一个很棒的工具 . 它有一个模拟调制解调器速度的设置,对于想要更多控制的人有一个plugin to add latency to each request .
我更喜欢使用这样的工具将延迟代码放在我的应用程序中,因为它是一个更加逼真的模拟,并且不会让我设计或编码实际位 . 最好的代码是我不必编写的代码 .
补充:Pavel Donchev在软件技术博客上的这篇文章展示了如何创建自定义模拟速度:Limiting your Internet connection speed with Fiddler .
从 Chrome 38 开始,您可以在没有任何插件的情况下执行此操作 . 只需单击inspect元素(或F12热键),然后单击"toggle device mod",您将看到如下内容:
在许多其他功能中,它允许您模拟特定的互联网连接(3G,GPRS)
P.S. 适用于尝试限制上传速度的用户 . 可悲的是,目前这是不可能的 .
P.S.2 现在你不需要切换任何东西 . 可以从网络面板上获得限制面板 .
请注意,在单击 No throttling 时,您可以创建自定义限制选项 .
您可以使用NetEm (Network Emulation)作为 proxy server to emulate many network characteristics (速度,延迟,数据包丢失等) . 它使用iproute2包控制网络,并在大多数Linux发行版的内核中启用它 .
它由 tc 命令行应用程序(来自iproute2包)控制,但也有一些NetEm的Web界面GUI,例如PHPnetemGUI2 .
tc
优点是,正如我所写,它不仅可以模拟不同的网络速度,还可以模拟数据包丢失,重复和/或损坏,随机或定义的延迟等,因此您可以模拟各种性能较差的网络 .
对于您的应用程序,它绝对透明,您可以将操作系统配置为使用NetEm代理服务器,因此来自该计算机的所有连接都将通过NetEm . 或者,您只能配置应用程序以将其用作代理 .
我一直在用它来测试Android应用程序在各种模拟的低性能网络上的性能 .
13 回答
此外,为了模拟某些* nixes上的慢速连接,您可以尝试使用ipfw . 更多信息由Ben Newman对此Quora的回答提供question
使用具有限制功能的Web调试代理,如Charles或Fiddler .
一般来说,你会发现它们是有用的Web开发 . 主要区别在于Charles是共享软件,而Fiddler是免费的 .
使用像TCPMon这样的工具 . 它可以伪造慢速连接 .
基本上,您请求它完全相同的东西,它只是将完全相同的请求转发到真实服务器,然后只用设定的字节数延迟响应 .
自10.10以来Mac OSX有一个名为Murus Firewall的应用程序,它作为pf的GUI,替换为ipfw .
它适用于系统范围或特定于域的限制 . 我只能用它来下载300Kbps到30Mbps的下载速度来测试流式视频播放器的调整方式 .
还有另一个名为WIPFW的工具 - http://wipfw.sourceforge.net/
这是一个有点旧的学校,但你可以用它来模拟一个较慢的连接 . 它是基于Windows的,该工具允许管理员监控路由器从某台计算机获得的流量,或者它正在转发的WWW流量 .
Google recommends:
在OSX上
Network Link Conditioner
在Windows上
Clumsy
Dummynet在Linux上
我使用的是http://www.netlimiter.com/,效果非常好 . 不仅限制单个过程的速度,还显示实际传输速率 .
在Linux机器上你可以使用
wondershaper
和是kpbs中的带宽
因此,例如,如果要将接口eth1的带宽限制为256kbps上行链路和128kbps下行链路,
要清除限制,
有一些TCP代理,比如iprelay和Sloppy,它们进行带宽整形以模拟慢速连接 . 您还可以使用ipfw和iptables等IP过滤工具进行带宽整形和模拟丢包 .
您可以尝试Dummynet,它可以模拟队列和带宽限制,延迟,数据包丢失和多路径效应
如果您正在运行Windows,fiddler是一个很棒的工具 . 它有一个模拟调制解调器速度的设置,对于想要更多控制的人有一个plugin to add latency to each request .
我更喜欢使用这样的工具将延迟代码放在我的应用程序中,因为它是一个更加逼真的模拟,并且不会让我设计或编码实际位 . 最好的代码是我不必编写的代码 .
补充:Pavel Donchev在软件技术博客上的这篇文章展示了如何创建自定义模拟速度:Limiting your Internet connection speed with Fiddler .
从 Chrome 38 开始,您可以在没有任何插件的情况下执行此操作 . 只需单击inspect元素(或F12热键),然后单击"toggle device mod"
,您将看到如下内容:
在许多其他功能中,它允许您模拟特定的互联网连接(3G,GPRS)
P.S. 适用于尝试限制上传速度的用户 . 可悲的是,目前这是不可能的 .
P.S.2 现在你不需要切换任何东西 . 可以从网络面板上获得限制面板 .
请注意,在单击 No throttling 时,您可以创建自定义限制选项 .
您可以使用NetEm (Network Emulation)作为 proxy server to emulate many network characteristics (速度,延迟,数据包丢失等) . 它使用iproute2包控制网络,并在大多数Linux发行版的内核中启用它 .
它由
tc
命令行应用程序(来自iproute2包)控制,但也有一些NetEm的Web界面GUI,例如PHPnetemGUI2 .优点是,正如我所写,它不仅可以模拟不同的网络速度,还可以模拟数据包丢失,重复和/或损坏,随机或定义的延迟等,因此您可以模拟各种性能较差的网络 .
对于您的应用程序,它绝对透明,您可以将操作系统配置为使用NetEm代理服务器,因此来自该计算机的所有连接都将通过NetEm . 或者,您只能配置应用程序以将其用作代理 .
我一直在用它来测试Android应用程序在各种模拟的低性能网络上的性能 .