测试具有有限网络访问权限的iPhone应用

时间:2009-06-05 11:05:44

标签: iphone testing networking

使用iPhone模拟器时,有没有办法模拟有限或无3G / Wifi / EDGE连接?

4 个答案:

答案 0 :(得分:11)

您希望测试速度的变化吗?或访问每种技术?

如果是速度,那么你可以使用以下ipfw技巧,图标工厂的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

答案 1 :(得分:4)

您可能需要查看SpeedLimit, OS X的首选项窗格,它可以限制带宽并控制延迟。

答案 2 :(得分:1)

如果您有iPhone网络共享,您可以关闭电缆调制解调器/ ASDL连接,并通过iPhone路由您的互联网。如果您的运营商是AT& T,这种方法非常有效。如果您没有AT& T作为您的运营商,则必须尝试使用​​其他方法之一来模拟糟糕的连接。

另一种低保真解决方案是将家用无线路由器包裹在锡纸中,或者将其放入金属盒中。你想要模拟的通常是一个糟糕的连接 - 而不是一个缓慢的连接。防火墙规则会降低连接速度,但不会丢失随机数据包。

由于您在Mac上,可以使用Dummynet。这会插入ipfw,但也可以模拟丢包。这是一个典型的带有Dummynet模块的ipfw:

ipfw add 400 prob 0.05 deny sr-ip 10.0.0.0/8

答案 3 :(得分:0)

您可以通过关闭机场来测试无网络: - )

为了更好地控制,Neil的ipfw建议是最好的方法。