在使用iPhone模拟器时,有没有一种模拟有限或无3G / Wifi / EDGE连接的方法?
在使用iPhone模拟器时,有没有一种模拟有限或无3G / Wifi / EDGE连接的方法?
您希望测试的是速度变化还是各项技术的访问权限?
如果想测试速度,您可以使用以下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
如果您有iPhone的热点功能,可以关闭您的电缆调制解调器/ADSL连接,并通过您的iPhone路由互联网。如果您的运营商是AT&T,则此方法效果非常好。如果您的运营商不是AT&T,则必须尝试其他方法来模拟劣质连接。
另一种低保真度的解决方案是,在家庭无线路由器外包裹锡箔,或将其放入金属盒中。通常要模拟的是劣质连接而不是慢速连接。防火墙规则会减慢连接,但不会丢失随机数据包。
由于您使用的是Mac,因此可以使用Dummynet。这个插件能够插入ipfw,还能模拟数据包丢失。这是一个具有Dummynet模块的典型IPFW:
ipfw add 400 prob 0.05 deny sr-ip 10.0.0.0/8
你可以通过关闭你的机场来测试无网络 :-)
对于更精细的控制,Neil的ipfw建议是最好的方法。