【问题标题】:How to set tcp_nodelay in MultipeerConnectivity framework in iOS 7如何在 iOS 7 的 MultipeerConnectivity 框架中设置 tcp_nodelay
【发布时间】:2013-10-24 11:20:33
【问题描述】:

我正在使用 iOS 7 的 MultipeerConnectivity 框架在多个设备之间传递消息。我可以在 MultipeerConnectivity 框架中设置 TCP_NODELAY 以使消息以最小的延迟通过。

有没有其他方法可以将一条小消息以最小的延迟传递到其他设备,最好小于 100 毫秒。

我想要最小延迟,因为我必须同时在两个设备中启动音频。如果延迟超过 100 毫秒,则可以观察到两个音频的延迟。

感谢高级。

【问题讨论】:

    标签: ios iphone objective-c ios7 multipeer-connectivity


    【解决方案1】:

    是的,MultiPeer 框架中有一个选项可以使用非可靠模式发送数据。它将立即发送数据,没有任何延迟。但不保证能送达。

    我希望它应该工作。

    【讨论】:

    • 我已经尝试过了,它改善了延迟,但仍然可以观察到两个音频的延迟。证明消息传递延迟仍然超过100毫秒。
    • 世界上没有任何系统可以以 0.0000000 的延迟向其他设备发送消息,它可能会以最小/不可观察的时间发送,但不可能实现零延迟。您必须为此考虑自己的逻辑,例如您可能会以时间为基础或其他东西,但是零延迟的消息是 100% 不可能的。
    • 我不是说我想要 0.000000 延迟,我想要小于 100 毫秒的延迟。
    • 你应该明白我想说什么。我想说的是,每 100 次尝试中的 100 次都不可能出现延迟小于 100 毫秒的消息。希望你现在明白了???
    • 这是可能的,时间同步和延迟开始音频。
    【解决方案2】:

    您必须同时启动音频(例如 0.2 秒),总会有一些延迟,因此您应该在两台设备上同步时钟。

    --------------------------------------------> Device #1
      |     /\                |              |
      | time |      then send |       audio  |
      | sync |      start     |       starts |
      |      |      time      |       here   |
      \/     |                \/             |
    --------------------------------------------> Device #2
    

    在这种情况下,它们将同时启动音频。 不要忘记在同步时间时保存您的 ping(开始音频的时间必须大于 ping)。

    优点:

    • 您的音频将几乎同时开始

    缺点:

    • 会有延迟(您需要一些时间 ~ 等于 ping)。

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      相关资源
      最近更新 更多