MacOS:UDP / TCP数据包之间的奇怪延迟

时间:2011-05-21 10:58:51

标签: objective-c cocoa macos tcp udp

我正在开发一个应用程序,它使用AsyncUDPSocket类将每个UDP的数据发送到Mac和Windows上的另一个客户端。数据包立即到达非常重要。

问题在于每个约。 1000个数据包我收到数据包时会延迟约2秒。延迟100-200毫秒就可以,但2秒会产生糟糕的用户体验。

我在单独的线程中进行UDP通信,因此它几乎不受用户与UI等的交互的影响。我已经尝试过更快,更慢,不同的数据包大小发送数据包:延迟保持在那里。尝试使用TCP而不是UDP - 相同的结果:(

在Windows Cliets上似乎没有发生。 也许在MacOS中有一些系统缓冲区需要在每次有N个数据包或N个字节的数据时刷新??? 有谁知道如何防止延迟发生?

1 个答案:

答案 0 :(得分:1)

有很多东西可以暂时减慢网络程序的速度,很难知道从哪里开始。你在多个网络上试过这个吗?无线网络和以太网网络?你有什么样的开关?这是在不同的OS X计算机上发生,还是仅在一台计算机上发生?你能用更简单的命令行程序重现延迟吗?你在使用垃圾收集吗? (抓住稻草......)

出于好奇,我测试了从我的Mac发送到同一局域网上另一台计算机的UDP回送数据包的往返时间。在有效载荷为1,000字节的超过60,000个UDP数据包中,没有一个超过32毫秒,平均往返时间为0.6毫秒,样本偏差为0.21。

(我也很好奇你需要什么样的低延迟。)