【发布时间】:2010-10-31 14:50:47
【问题描述】:
在使用 iPhone 模拟器时,是否有任何方法可以模拟有限或没有 3G/Wifi/EDGE 连接?
【问题讨论】:
标签: iphone testing networking
在使用 iPhone 模拟器时,是否有任何方法可以模拟有限或没有 3G/Wifi/EDGE 连接?
【问题讨论】:
标签: iphone testing networking
是您希望测试的速度变化吗?或访问每种技术?
如果速度够快,那么您可以使用以下 ipfw 技巧(由 Icon Factory 的 Craig Hockenberry 提供)来使用 ipfw 来限制与给定域的连接。在这个例子中,它是 twitter,它限制了所有进出主机的连接的速度。
这是一个 bash 脚本,如果你在做 iPhone 开发,你将在 Mac 上,所以只需创建它并在终端中运行。
#!/bin/bash
# configuration
host="twitter.com"
# usage
if [ "$*" == "" ]; then
echo "usage: $0 [off|fast|medium|slow]"
exit
fi
# remove any previous firewall rules
sudo ipfw list 10 > /dev/null 2>&1
if [ $? -eq 0 ]; then
sudo ipfw delete 10 > /dev/null 2>&1
fi
sudo ipfw list 11 > /dev/null 2>&1
if [ $? -eq 0 ]; then
sudo ipfw delete 11 > /dev/null 2>&1
fi
# process the command line option
if [ "$1" == "off" ]; then
# add rules to deny any connections to configured host
sudo ipfw add 10 deny tcp from $host to me
sudo ipfw add 11 deny tcp from me to $host
else
# create a pipe with limited bandwidth
bandwidth="100Kbit"
if [ "$1" == "fast" ]; then
bandwidth="300Kbit"
elif [ "$1" == "slow" ]; then
bandwidth="10Kbit"
fi
sudo ipfw pipe 1 config bw $bandwidth
# add rules to use bandwidth limited pipe
sudo ipfw add 10 pipe 1 tcp from $host to me
sudo ipfw add 11 pipe 1 tcp from me to $host
fi
【讨论】:
你可以通过关闭你的机场来测试没有网络:-)
为了更好的控制,Neil 的 ipfw 建议是最好的方法。
【讨论】:
您可能想看看SpeedLimit, 一个 OS X 的首选项窗格,它允许您限制带宽和控制延迟。
【讨论】:
如果您有 iPhone 网络共享,您可以关闭电缆调制解调器/ASDL 连接,并通过您的 iPhone 路由您的互联网。如果您的运营商是 AT&T,此方法非常有效。如果您没有 AT&T 作为运营商,则必须尝试其他方法之一来模拟糟糕的连接。
另一种 lo-fi 解决方案是将您的家用无线路由器包裹在锡箔中,或将其放入金属盒中。您通常要模拟的是糟糕的连接 - 而不是慢速连接。防火墙规则会减慢连接速度,但不会丢失随机数据包。
由于您使用的是 Mac,因此您可以使用 Dummynet。这插入 ipfw,但也可以模拟丢包。这是带有 Dummynet 模块的典型 ipfw:
ipfw add 400 prob 0.05 deny sr-ip 10.0.0.0/8
【讨论】: