如何通过WiFi连接iPhone应用程序上的多个对等设备?

4
我有一个关于iOS(iPhone)应用程序的想法,需要连接到多个对等端。我正在基于WiTab(SampleCode-developer.apple.com)示例编写代码。
当我的应用程序启动时,每个对等端都创建单独的Socket(CFSocket)并通过NSNetService类进行发布。特别是NSNetServiceBrowser类发现可用的对等端,并在TableView中显示它们的名称。当我在表视图中选择行时,对应的对等端地址被解析,建立连接并成功发送接收数据。
但是我的意图是,我想在tableView中选择多个行(多个对等端)。并解析所选对等端的地址。为此,我将所选对等端信息存储到NSMutableArray中。当我点击(触摸)发送按钮时,我想解析所选设备地址并将数据发送到所选对等端。为此,我编写了以下代码。
 for(int k=0;k<[selectedService count];k++)
    {

             self.currentResolve = [self.selectedService objectAtIndex:k];         
             self.currentResolve = [self.selectedSer objectAtIndex:k];     
             [self.currentResolve setDelegate:self];    
             [self.currentResolve resolveWithTimeout:60];           
  }

但它只能解决一个设备(self.selectedService objectAtIndex:0)。那么,如何解决多个对等地址/如何为多个设备建立连接?
所以我的疑问是:
  1. 是否可以通过WiFi同时连接多个设备?
  2. 如果可以,最大可以在同一模式下连接多少设备?
  3. 哪种类型的CFSocket适用于多个连接(TCP/UDP)?
  4. 是否需要在每个对等体中创建多个CFSocket?
  5. 如果是,请问如何创建?是否有可用的文档?
  6. 是否需要建立会话?
  7. 如何为多个设备解析地址?

你需要避免重复使用单个的 currentResolve 对象。每次循环动态创建一个对象,并将它们的引用存储在数组中,以便在超时后进行检索和处理。 - tobinjim
2个回答

9
这个Apple.Developer Witap应用程序很难修改,因为你需要持有所有已解析的地址,必须修改所有方法并处理大量内容。
我认为这个教程将实现你的目标。
该应用程序名为“Chatty”,其源代码位于这里下载该应用 --> 打开 --> 点击 Chatti 项目选项卡 --> 构建设置 --> 将基本SDK更改为iOS6 它是以MIT许可证发布的,这意味着您可以自由地修改和重复使用它。
在本教程中,我们将探索一款简单的iPhone聊天应用程序。它允许您托管自己的聊天室并在您的本地Wi-Fi网络上进行广告推广(在这种情况下,您的应用程序充当聊天“服务器”),或者查找并加入由其他人在您的网络上托管的聊天室(充当聊天“客户端”)。聊天室的公告和发现都是使用苹果的Bonjour协议实现的,与Witap应用程序相同。
现在我回答您的每个问题: 是否可以通过WiFi同时连接多个设备? 是的,您可以。 如果是,可以连接的设备数量的最大值是多少? 我认为您可以与任意数量的设备配对。 TCP/UDP哪种类型的CFSocket对于多个连接有用? 我的建议是TCP。
您的其他问题的答案可以轻松从示例Chatty应用程序中理解:)
请注意:服务器和客户端需要在同一个WiFi网络上。

0

根据您的应用程序性质,您可以使用GamKit框架,它将提供比您要求的更多功能。以下是需要注意的事项。

  1. 游戏中心

6.1 显示任何玩家ID给最终用户或任何第三方的应用程序将被拒绝。 6.2 将玩家ID用于除Game Center条款批准的用途以外的任何用途的应用程序将被拒绝。 6.3 试图反向查找、跟踪、关联、挖掘、收集或以其他方式利用通过Game Center获得的玩家ID、别名或其他信息的开发人员将被从iOS开发人员计划中删除。 6.4 仅在经Game Center批准的应用程序中使用排行榜分数等Game Center信息。 6.5 使用Game Center服务发送未经请求的消息,或者用于网络钓鱼或垃圾邮件的应用程序将被拒绝。 6.6 过度使用Game Center的网络容量或带宽的应用程序将被拒绝。 6.7 传输可能损害或破坏Game Center服务正常运行的病毒、文件、计算机代码或程序的应用程序将被拒绝。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接