objective-c - MacOS:UDP/TCP 数据包之间出现奇怪的延迟

标签 objective-c cocoa macos tcp udp

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

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

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

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

最佳答案

有很多因素会暂时减慢网络程序的速度,但很难知道从哪里开始。您是否在多个网络上尝试过此操作?无线网络和以太网网络?你有什么样的开关?这种情况是发生在不同的 OS X 计算机上,还是仅发生在一台计算机上?您可以使用更简单的命令行程序重现延迟吗?您正在使用垃圾收集吗? (捕获这里的救命稻草...)

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

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

关于objective-c - MacOS:UDP/TCP 数据包之间出现奇怪的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6081262/

相关文章:

ios - 如何在点击时禁用 UIButton 突出显示?

objective-c - CGImage、NSArray 和内存

ios - 应用内购买、消耗品

objective-c - CATransformLayer 不支持隐式动画?

objective-c - 图片下载的顺序不正确

objective-c - 如何获取 NSOutlineView 可见行的索引?

php - 有 MAMP PRO 的免费替代品吗?

objective-c - 如何创建测试以确保没有保留周期?

ios - 如何继承 UICollectionView?

objective-c - 在 XCode 5 中显示该特定年份的月份列表