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

问题描述:

我有一个ios(iPhone)应用程序需要连接到几个同行的想法。我将我的代码放在WiTab(SampleCode-developer.apple.com)示例上。如何通过WiFi连接iPhone应用上的多个对等点?

当我的应用程序启动每个对等创建单独的套接字(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. 如何解析多元器件的地址?
+0

您不需要重复使用单个currentResolve对象。每次在循环中动态创建一个,并在数组中存储对它们的引用以便在超时后进行检索/处置。 – tobinjim 2012-04-24 19:09:52

根据您的应用程序的性质,您可以使用GamKit框架,它会提供比您要求的更多的功能。以下是要采取的预防措施。这显示任何玩家ID

  1. 游戏中心

6.1 应用程序向最终用户或任何第三方都将被拒绝 6.2 应用程序使用玩家ID超过所批准的游戏之外的任何使用中心方面将被拒绝 6.3 开发商试图反向查找,跟踪联系,联想,矿山,收获,或以其他方式利用玩家ID,别名,或通过游戏中心获得的其他信息将被从iOS开发者计划 删除6.4 游戏中心信息(例如排行榜分数)只能用于经批准与Game Center一起使用的应用程序 6.5 使用Game Center服务发送未经请求的消息或用于网络钓鱼或垃圾邮件的应用程序将被拒绝 6.6 应用程式过度使用游戏中心的网络容量或带宽将被拒绝 6。7个 应用程序来传播病毒,文件,计算机代码或程序,可能损害或破坏游戏中心服务的正常运行将被拒绝

它相当困难,因为你需要修改Apple.Developer Witap应用持有所有已解决的地址,必须修改所有方法并处理大量问题。

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

的应用程序被称为“健谈”。它的源代码位于here

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

它被下MIT许可证,这意味着你是*发布修改和重用它随意

在本教程中,他们将探索一个简单的iPhone聊天应用程序。它允许您托管自己的聊天室并在您的本地Wi-Fi网络(在这种情况下,您的应用充当聊天“服务器”)或在您的网络上查找和加入其他人托管的聊天室作为聊天“客户”)。这两个公告及聊天室发现实现使用苹果的的Bonjour协议一样Witap应用

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

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

是,您可以

如果是,什么是可以在 相同的模式被连接的设备的最大数量?

我想你可以用任何数量的设备

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

我的建议是TCP

你的问题可以从样品健谈的应用程序:)

注意很容易理解的其余的答案:服务器和客户端必须在同一WiFi网络