【发布时间】:2011-05-21 10:58:50
【问题描述】:
我正在开发一个应用程序,它使用 AsyncUDPSocket 类将每个 UDP 的数据发送到 Mac 和 Windows 上的另一个客户端。数据包立即到达非常重要。
问题是每个大约。 1000 个数据包我收到数据包时延迟大约 2 秒。 100-200 毫秒的延迟是可以的,但 2 秒会产生糟糕的用户体验。
我在一个单独的线程中进行 UDP 通信,因此它几乎不受用户与 UI 等交互的影响。我已经尝试过更快、更慢、不同的数据包大小发送数据包:延迟一直存在。尝试使用 TCP 而不是 UDP - 结果相同:(
在 Windows 客户端上似乎不会发生这种情况。 也许MacOS中有一些系统缓冲区,每次它有N个数据包或N个字节的数据时都需要刷新??? 有谁知道如何防止延迟发生?
【问题讨论】:
-
检查您的 DNS 设置。如果通过主机名连接,延迟可能是由名称解析引起的。
-
我使用 IP 地址连接,因此不需要 DNS 查找
-
以防万一涉及 DNS,在对等 B(遇到延迟的那个)的 /etc/hosts 中添加对等 A 的 IP 地址,看看是否有区别。
-
这个问题解决了吗?我在 Linux 系统上看到了同样的效果。
标签: objective-c cocoa macos tcp udp