iOS Multipeer Connectivity 是否提供路由层?

Does iOS MultipeerConnectivity provide routing layer?

我正在编写一个应用程序,它应该可以在没有连接到移动运营商且没有本地 WiFi 的情况下运行。每个设备将充当发射器、接收器和路由器。 到目前为止,我的主要挑战是我无法弄清楚 MultipeerConnectivity works as documentation on MC is really limited. Apple denied revealing technical specification of MC claiming it's a proprietary network stack, so I have to rely on network sniffers and reverse-engineering 究竟如何,这不是弄清楚 MC 工作原理的最快方法。

假设我有 100 台设备组成网状网络,这样 每台设备都在至少一个其他设备的范围内,最多三个其他设备

有没有什么方法可以从节点A向节点B发送一个不在节点A范围内的消息,而不需要将消息广播到所有其他节点?我的意思是消息应该通过所有其他节点正确路由。 MC也包含路由层还是我必须自己写?

据我所知ad hoc 延迟容忍无线网络 仍然是研究的热点。 这些幻灯片 ad hoc delay tolerant wireless network shed more light on the subject as it was a few years ago. And also this paper。 Apple 在 MC 方面取得了很大进展吗? 我真的看不出有什么方法可以在不直接连接的节点之间发送消息而不会泛滥。 正确的?

MCSession Reference 表示

Sessions currently support up to 8 peers, including the local peer.

此外,您引用的概述说

In the discovery phase, your app uses a browser object […] to browse for nearby peers[.]

此外,the documentation on managing peers manually 建议会话中的所有对等点必须相互连接才能让他们进入会话。

这表明该框架仅涵盖附近 设备之间的通信,如'reachable by bluetooth or WiFi'。当然,这些设备不需要复杂的路由,因为它们确实相互通信,而且从程序员的角度来看,该框架的好处是附近设备之间的简单多播。

就您的问题而言,这是关于它的 - 微不足道,因为所有对等 MCSession 彼此都有 links - 不需要路由。

然而,这确实让您可以非常轻松地构建路由层。

根据您的情况,将有多个 MCSession 设备至少属于其中一个。属于多个 MCSession 的所有设备都会成为路由器并将 MCSession 相互连接。

剩下的任务应该很简单;定义用于寻址设备的名称空间并实施您选择的路由协议。

过去的互联网,拨号连接不稳定,这对您来说可能是一个加分项,因为现有的路由协议在 link 丢失方面相当稳定。

这里有两个很好的起点,可以帮助您选择更合适的产品: