为了评估iPhone上的TCP与UDP,我在我的计算机上编写了一个小型echo服务器,并在iPhone上使用了AsyncUdpSocket库,但延迟时间非常大,我想知道我的实现是否有问题不知。
我的设置有一个wifi路由器(Apple Airport),它有一个外部静态IP。 echo服务器使用的端口将转发到我的开发计算机。
我使用了两种不同的设置:
数据包大小约为10个字节。
在第一种情况下,往返行程从9毫秒到600毫秒不等。大多数情况下,我会看到大约300毫秒的中位数,但有些运行只有30毫秒。
第二种情况......最佳情况2000毫秒,最多移动5000毫秒。
实现将发送UDP数据包,等待它返回,然后发送下一个。
我最初认为实施有些问题,但是从模拟器运行它会产生一致的延迟,只有7毫秒。
我的号码是正确的还是奇怪的事情?
答案 0 :(得分:1)
我看到了这个link on iphone Wifi latency,我决定尝试更快地抽取UDP数据包。
我开始降低接收ping和发送新ping之间的延迟,直到我达到50毫秒。
在50毫秒时,UDP ping(往返)使用3G降低到大约80毫秒(记住,这最初是在2000毫秒左右)!
TCP也有所改进,但没有UDP那么多。我会再次在3G上获得100-200毫秒。
我的结论是iPhone关闭天线,严重影响UDP。 TCP更好,因为手机知道开放连接并且启动速度更快。
在数据包丢失期间顺便,TCP将达到1000-2000 ms的ping。这与自己的观察一致,即TCP连接偶尔会在iPhone上遭受大量延迟。
答案 1 :(得分:1)
我每隔30秒发送一个1字节的udp数据包,延迟消失。这样天线永远不会睡觉。