12

我希望使用 Multipeer Connectivity 框架,并感谢任何关于如何最好地进行的经验的声音。

我需要一个“教练”设备和多达 45 个“玩家”设备之间的连接。它们都将在同一个空间中,但无法预测 wifi 可用性或连接。教练设备需要每秒向所有玩家设备发送一条指令(一个小数据包)。每个“玩家”需要每秒将蓝牙心率监测器的读数(非常小的数据包)发送回教练。由于每个会话的最大对等点是 8,这些想法中的任何一个都可以满足我需要的数量吗?

a) 与教练建立连接的前 7 个玩家设备宣传不同的会话类型,并允许 7 个(或者这将是 6 个?)更多的玩家加入他们。前 7 人充当其他 49 人(或 42 人?)的中间人,将教练的指示传递给教练,并将收集到的读数传回给教练。指导和心率读数之间有几秒钟的延迟不是首选,但可以。

b) 教练设备创建并宣传一个会话。在 7 个玩家设备连接后,教练设备创建另一个会话并重复 7 个以上。重复直到所有玩家设备都连接到教练。这似乎不太可能奏效,但在不了解 Multipeer Connectivity 的魔力的情况下,这是一个浮现在脑海中的选择。

c) 教练与玩家设备 1 建立会话,该设备以菊花链拓扑连接到设备 2……。当每个设备收到指令时,它会将自己的读取添加到数据包中并继续发送。最后一个设备将整个数据包返回给教练。我无法预测一轮数据需要多长时间,如果一个设备离开该组似乎也很麻烦。

任何关于使用多点连接框架为 45 台左右的设备提供经验的建议或声音将不胜感激。

4

4 回答 4

7

我最近一直在思考类似的事情,我会说在你的情况下,如果你不需要“玩家”相互交流,b) 将是你最好的选择。

Multipeer Connectivity 支持多个会话,因此您可以拥有一个用于会话对象的数组,以“教练”的身份进行宣传,并且每个发现的玩家都可以在有容量的情况下邀请最新会话或创建新会话。

您的播放器对象可以保留对会话和 peerID 的引用以发送数据,并且可能保留映射到相应播放器对象的 peerID displayNames 字典以处理传入数据。

这样,您在给定的“球员”和“教练”之间也没有跳跃,这与 a) 和 c) 不同。

显然,这里真正的诀窍是测试。我自己没有 8 台以上的设备,我仍然不确定我将如何测试我自己的实现!

编辑

我在这里用实际代码回答了一个类似的问题:Best option for streaming data between iPhones

于 2013-10-22T22:28:32.763 回答
4

我知道这是一个老问题。我以前也遇到过同样的问题(并且问过类似的问题但没有明确的答案)。

我测试过的事情和面临的问题:

  1. “正常方式”——一次会议。

    • 问题:最多 8 个设备。
  2. 会话数组在每个会话上放置 6 个设备(避免最多 8 个)

    • 问题:过热,内存和cpu消耗过多。当来自多个会话的多个设备一次断开连接时,重新连接可能需要很长时间才能被接受。
  3. 这是最复杂的方法。

    脚步:

    1. 我们创建会话并允许最多 4 - 5 个客户端。
    2. 每次连接客户端时,他都会创建一个具有相同条件的组。
    3. 当我们达到最大客户数量(4 - 5 个,具体取决于您的实施)时,我们会停止广告。
    4. 新客户端将像细胞一样相互连接。诀窍是有一些方法来决定新客户端需要按优先级顺序连接的女巫会话,并创建一种方法来将客户端会话的流量重新发送到“服务器复制器”。

最后一种方法的唯一问题是它是最复杂的,您需要一些数学知识,一支铅笔和一张纸来决定您将如何互连您的客户并重新发送您的流量。

于 2016-06-17T13:52:35.090 回答
0

您可以使用此https://github.com/jdiehl/async-network#request-based-networking而不是 MultiPeer Connectivity 框架

于 2015-02-24T07:01:11.343 回答
-6

默认为 8,不是最大值,

你的问题吓到我了,因为我也需要超过 8 个!!

它一定写得不好,下面更正了。

maximumNumberOfPeers 会话中允许的最大对等点数,包括本地对等点。@property(assign, nonatomic) NSUInteger maximumNumberOfPeers 讨论 最大允许值(和默认值)是 8。

https://developer.apple.com/library/ios/documentation/MultipeerConnectivity/Reference/MultipeerConnectivityFramework/MultipeerConnectivityFramework.pdf

于 2013-11-21T13:21:31.140 回答