ios - iOS Multipeer Connectivity 是否提供路由层?

标签 ios networking routing wifi distributed

我正在编写一个应用程序,它应该可以在没有连接到移动运营商且没有本地 WiFi 的情况下运行。每个设备都将充当发射器、接收器和路由器。 到目前为止,我的主要挑战是我无法弄清楚 MultipeerConnectivity 到底是怎么回事。作为 MC 上的文档非常有限。 Apple 否认透露 MC 的技术规范,声称它是专有网络堆栈,所以我不得不依赖网络嗅探器和 reverse-engineering这不是了解 MC 工作原理的最快方法。

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

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

据我所知,ad hoc 延迟容忍无线网络 仍然是研究的热门课题。 这些幻灯片 ad hoc delay tolerant wireless network与几年前一样,对这个主题有了更多的了解。和 also this paper . Apple 在 MC 方面取得了很大进展吗? 我真的看不出有什么方法可以在不直接连接的节点之间发送消息而不会泛滥。 正确的? Mesh network

最佳答案

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建议 session 中的所有对等点必须相互连接才能让他们进入 session 。

这表明该框架仅涵盖附近 设备之间的通信,如“可通过蓝牙或 WiFi 访问”。自然地,这些设备不需要复杂的路由,因为它们确实相互通信,而且从程序员的角度来看,该框架的好处是附近设备之间的简单多播。

就您的问题而言,这是关于它的 - 微不足道,因为 MCSession 的所有对等点都相互链接 - 不需要路由。

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

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

剩下的任务应该是直截了当的;定义用于寻址设备的 namespace 并实现您选择的路由协议(protocol)。

互联网的旧时代,拨号连接不稳定,可能对您来说是一个加分因素,因为现有的路由协议(protocol)在链路丢失方面相当稳定。

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

关于ios - iOS Multipeer Connectivity 是否提供路由层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669037/

相关文章:

ios - 如何调整标签大小以根据屏幕大小更改

c - 相当于 Windows 中的 TIOCOUTQ/SIOCOUTQ

scala - 如何在测试规范中修复参数ta缺少的隐式值:TildeArrow

javascript - 如何在不刷新 ReactJs 页面的情况下重新加载 URL?

asp.net-mvc - 如何在 ASP.NET MVC 路由中使用带有 HttpMethodConstraint 的自定义约束?

ios - 将信息从 TableView 传递到 View Controller 不是基于 indexPathForSelectedRow,而是基于所选单元格的标签文本?

iphone - 从网络服务器加载 PLIST

Python 网络/cidr 计算

c++ - 如何获取目标应用程序的 tcp/udp 端口​​列表

iOS swift : Open Mail app in inbox emails