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

时间:2012-01-12 10:49:31

标签: objective-c ios wifi nsnetservice cfsocket

我对ios(iPhone)应用程序有一个想法,需要连接到多个对等体。我的代码基于WiTab(SampleCode-developer.apple.com)示例。

当我的应用程序启动时,每个对等体创建单独的Socket(CFSocket)并通过NSNetService Class发布。在特定实例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. 如何解决mutple设备的地址?

2 个答案:

答案 0 :(得分:8)

很难修改 Apple.Developer Witap 应用程序,因为您需要保存所有已解析的地址,必须修改所有方法并处理批次。

我认为this tutorial将实现您的目标。

该应用程序名为“ Chatty 。”其源代码位于here

<强> Download the App --> Open --> Click-on Chatti project tab --> Build Settings --> Change the base SDK to iOS6

它是在麻省理工学院许可证下发布的,这意味着您随意修改和重复使用

在本教程中,他们将探索iPhone的简单聊天应用程序。它允许您托管自己的聊天室并在本地Wi-Fi网络上广告(在这种情况下,您的应用充当聊天“服务器”)或查找并加入由其他人托管的聊天室在您的网络上(充当聊天“客户端”)。聊天室的发布和发现均使用Apple的 Bonjour协议(与Witap Application相同)

实现

现在我正在回答你的每个问题

  

是否可以通过WiFi同时连接多个设备?

     

是的,你可以

     

如果是,可以连接的最大设备数是多少   相同的模式?

     

我认为您可以与任意数量的设备配对

     

哪种类型的CFSocket对多个连接(TCP / UDP)有用?

     

我的建议是TCP

您可以从示例Chatty App中轻松了解您的问题的其余答案:)

注意:服务器和客户端需要位于同一个WiFi网络

答案 1 :(得分:0)

根据应用程序的性质,您可以使用GamKit Framework,它将提供比您要求的更多功能。以下是采取的预防措施。

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