Multipeer Framework iOS 可靠

Posted

技术标签:

【中文标题】Multipeer Framework iOS 可靠【英文标题】:Multipeer Framework iOS reliable 【发布时间】:2018-07-23 00:19:28 【问题描述】:

有人可以指导我阅读有关 Reliable 选项如何使用 Apple 的 Multipeer Framework for ios 来处理 sendData 的文档吗?据我所知,它保证了以正确的顺序交付,但是当对等点之间的连接不可靠时会发生什么?当两个设备重新连接时,它们会恢复传输吗?如果接收者永久消失,那么告诉发送者的应用程序消息失败以开始恢复的机制是什么?发件人的出站队列在什么时候被清除?谢谢!

【问题讨论】:

嗨,戴夫。欢迎在 Stack Overflow 上发帖。我认为你应该尝试在你的帖子中回答这些问题,并参考关于每一点的支持文档。该问题被否决的原因是社区倾向于对尚未证明真正的研究努力的过于宽泛的问题持悲观态度。以下是一些可以帮助您的指南:How to Ask。干杯! 正如我在原始帖子中解释的那样,我在文档中找不到任何内容来解释该功能如何针对断开连接工作。这个问题非常具体:它询问是否有人知道任何解释它的文档。此外,我解释了 Reliable 应该做什么(根据文档),以证明我了解它的目的。最后,我给出了我正在寻找的详细程度的例子。如果社区中的某个人知道某处对此进行了解释(或可以解释),我将不胜感激。 好的,但我仍然不认为这是当前提出的一个好的 Stack Overflow 问题。它提出了一系列问题,没有任何可能有助于讨论答案的内容链接。我们倾向于专注于通常涉及代码、命令、日志、文档部分等的特定问题的特定答案。我们试图避免的是关于事情如何工作的一般性讨论,因为互联网上有很多论坛可以解决这些类型的问题对于需要即时详细信息的繁忙 IT 人员来说,它们并不是那么有用。 文档是 developer.apple.com/documentation/multipeerconnectivity/… 和特别是 developer.apple.com/documentation/multipeerconnectivity/…,其中声明: MCSessionSendDataReliable:框架应保证每条消息的交付,根据需要排队和重新传输数据,并确保按顺序交付。它没有说的是当点对点连接中断时“应该”是否有效,以及如果未能“保证交付”,它是否/如何向呼叫者发出信号。有人知道吗? 【参考方案1】:

在缺少任何信息的情况下,我实施了一个编号的数据包方案,发送者向接收者发送一个连续的“数据包”编号和一个嵌入在数据中的预分配发送者 ID,在崩溃、重启等过程中保持不变。所有传输都是如果需要重新发送,则在发送方排队。当接收方收到消息时,它会提取“数据包”编号并执行以下三个操作之一:

如果它是预期的下一个数据包(基于跟踪数据包 已经从发送方收到),它会处理它并告诉发送方将其从其传输队列中删除。 如果一个包号被跳过,它会忽略它并要求发送者 重新发送以该数据包开头的队列中的所有内容。 如果包号已经被接收到,则将其丢弃为 重复,尽管它向发送者发出信号,表示可以将其从传输队列中删除。

在正常操作中,此方案依赖于“可靠”设置来按顺序传递消息。但是,第二个和第三个选项在断开/重新连接的情况下至关重要,因为它可以防止重复和丢失消息。

【讨论】:

以上是关于Multipeer Framework iOS 可靠的主要内容,如果未能解决你的问题,请参考以下文章

Multipeer Connectivity Framework (iOS7) 如何在附近没有 Wi-Fi 路由器且蓝牙接口关闭的情况下使用?

通过 Multipeer Framework 临时同步两个客户端

Multipeer Connectivity 自动静默连接

iOS 7 Multipeer Connectivity- MCNearbyServiceBrowser 找到自己了吗?

Multipeer Connectivity iOS 7中的invitePeer超时

Multipeer Connectivity IOS:didFinishReceivingResourceWithName 错误处理(崩溃)