2013-07-25 21 views
0

为了评估iPhone和iPhone上的TCP和UDP,我在我的电脑上编写了一个小型回声服务器,并使用iPhone上的AsyncUdpSocket库,但延迟时间出乎意料地大,我想知道我的实现有什么问题。3G上的典型UDP延迟 - 我的号码是否正确?

我的设置有一个无线路由器(苹果机场),它具有外部静态IP。 echo服务器使用的端口被转发到我的开发计算机。

我用了两个不同的设置:

  1. iPhone - >无线上网 - >无线路由器 - >无线上网 - >计算机
  2. iPhone - > 3G - >无线路由器 - >无线上网 - >计算机

数据包大小约为10个字节。

在第一种情况下,往返时间从9ms变化到600ms。大多数情况下,我会看到大约300毫秒的中位数,但一些运行只有30毫秒。

第二种情况...最好的情况2000毫秒,移动到5000毫秒。

执行会发送一个UDP数据包,等到它回来,然后发送下一个。

我最初认为这个实现有些问题,但是从模拟器运行它给出了一个只有7毫秒的一致延迟。

我的号码是正确还是有点奇怪?

回答

1

我看到这个link on iphone Wifi latency,我决定尝试更快地抽取UDP数据包。

我开始降低接收ping和发送新ping之间的延迟,直到达到50 ms。

在50毫秒时,使用3G(记得,这最初是在2000毫秒左右),UDP ping(往返)降低到80毫秒左右!

TCP也有所改进,但不如UDP。我会再次获得100-200毫秒的3G时间。

我的结论是iPhone断电的天线,这严重影响了UDP。 TCP更好,因为电话知道打开的连接并且上电速度更快。

顺便说一句在丢包期间,TCP会达到1000-2000毫秒的ping。这与自己的观察相吻合,即TCP连接偶尔会在iPhone上遭受大量延迟。

0

我发送一个每30秒1个字节的udp数据包,并延迟desapared。这样天线就不会睡觉。