Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 最多45台设备的多EER连接框架_Ios_Multipeer Connectivity - Fatal编程技术网

Ios 最多45台设备的多EER连接框架

Ios 最多45台设备的多EER连接框架,ios,multipeer-connectivity,Ios,Multipeer Connectivity,我希望使用Multipeer连接框架,并希望能听到任何关于如何最好地进行的经验 我需要一个“教练”设备和多达45个“球员”设备之间的连接。他们将在同一个空间,但无法预测wifi可用性或连接。教练设备需要每秒向所有球员设备发送指令(一个小数据包)。每个“玩家”每秒都需要从蓝牙心率监视器(非常小的数据包)向教练发送一个读数。既然每个会话的最大对等点是8个,那么这些想法中有没有一个能满足我需要的数量 a) 与教练建立联系的前7名球员设备会公布不同的训练类型,并允许7名(或者是6名?)更多球员加入。前7

我希望使用Multipeer连接框架,并希望能听到任何关于如何最好地进行的经验

我需要一个“教练”设备和多达45个“球员”设备之间的连接。他们将在同一个空间,但无法预测wifi可用性或连接。教练设备需要每秒向所有球员设备发送指令(一个小数据包)。每个“玩家”每秒都需要从蓝牙心率监视器(非常小的数据包)向教练发送一个读数。既然每个会话的最大对等点是8个,那么这些想法中有没有一个能满足我需要的数量

a) 与教练建立联系的前7名球员设备会公布不同的训练类型,并允许7名(或者是6名?)更多球员加入。前7名学生充当其他49名(或42名?)学生的中间人,将教练的指示传递给他们,并将收集的读数传回教练。指令和心率读数之间的几秒钟延迟不是首选,但也可以

b) coach设备创建并播发一个会话。连接7个玩家设备后,coach设备创建另一个会话并重复7次以上。重复此操作,直到所有球员设备都连接到教练。这似乎不太可能奏效,但如果不了解多点连接的神奇之处,这是一个出现在脑海中的选项

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


如果您在45台左右的设备上使用Multipeer连接框架方面有任何建议或经验,我们将不胜感激。

我最近一直在思考类似的问题,我想在您的案例中说b)如果您不需要“玩家”相互交流,这将是您的最佳选择

Multipeer Connectivity支持多个会话,因此您可以为会话对象创建一个数组,以“教练”的身份发布,并与每个发现的玩家一起邀请最新的会话(如果它有容量)或创建一个新的会话

为了发送数据,您的player对象可以保留对会话和peerID的引用,也可以保留一个映射到相应player对象的peerID displayNames字典来处理传入数据

这样,在给定的“玩家”和“教练”之间也不会有跳跃,这与a)和c)不同

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

编辑


我在这里用实际代码回答了一个类似的问题:

默认值是8,不是最大值

你的问题吓了我一跳,因为我还需要8个以上

它一定是写得很糟糕,下面看起来更正了

最大对等数 会话中允许的最大对等方数,包括本地对等方。 @属性(赋值,非原子)NSUInteger maximumNumberOfPeers 讨论 最大允许值(默认值)为8


您可以使用这个而不是多eer连接框架,我知道这是一个老问题。 我以前也遇到过同样的问题(并且问了一个类似的问题,但没有明确的答案)

我测试过的东西和面临的问题:

  • “正常方式”——一次会议

    • 问题:最多8个设备
  • 会话阵列在每个会话上放置6台设备(避免最多8台)

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

    步骤:

  • 我们创建会话并允许最多4-5个客户端
  • 每次连接客户机时,他都会创建一个具有相同条件的组
  • 当我们达到最大客户数量(4-5,取决于您的实现)时,我们停止广告
  • 新客户端将像单元一样相互连接。诀窍是使用某种方法来确定新客户端需要连接到的按优先级排序的witch会话,并创建一种方法来将客户端会话的通信重新发送到“server replicator”会话

  • 最后一种方法的唯一问题是,它是最复杂的,你需要一些数学知识,一支铅笔和一张纸来决定你将如何与你的客户建立联系,重新发送你的流量

    “最大允许值…是8。”你在回答中自己引用了它。。。默认值可能是8,但它也是最大的。@属性(赋值,非原子)NSUInteger maximumNumberOfPeers允许的最大值(默认值)是8。您可以留下一个更新或注释,说明您是如何实现这一点的吗?