0

为了评估 iPhone 上的 TCP 与 UDP,我在我的计算机上编写了一个小型回显服务器,并在 iPhone 上使用了 AsyncUdpSocket 库,但是延迟出乎意料地大,我想知道我的实现是否有问题。

我的设置有一个具有外部静态 IP 的 wifi 路由器(Apple Airport)。回显服务器使用的端口被转发到我的开发计算机。

我使用了两种不同的设置:

  1. iPhone -> Wifi -> Wifi 路由器 -> Wifi -> 电脑
  2. iPhone -> 3G -> Wifi 路由器 -> Wifi -> 电脑

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

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

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

实现将发送一个 UDP 数据包,等待它返回,然后发送下一个。

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

我的数字是正确的还是发生了什么奇怪的事情?

4

2 回答 2

1

我每 30 秒发送一个 1 字节的 udp 数据包,延迟消失了。这样天线永远不会休眠。

于 2014-06-03T00:45:39.737 回答
1

我在 iphone Wifi 延迟上看到了这个链接,我决定尝试更快地抽取 UDP 数据包。

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

在 50 毫秒时,使用 3G 的 UDP ping(往返)下降到大约 80 毫秒(请记住,这最初是大约 2000 毫秒)!

TCP 也有所改进,但不如 UDP。我会得到 100-200 毫秒,再次在 3G 上。

我的结论是 iPhone 会关闭天线,这会严重影响 UDP。TCP 更好,因为手机知道打开的连接并且开机速度更快。

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

于 2013-07-27T13:37:52.900 回答