gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:01:27 26 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com