【问题标题】:How to Connect multiple peers on the iPhone Application over WiFi?如何通过 WiFi 连接 iPhone 应用程序上的多个对等点?
【发布时间】:2012-01-12 10:49:31
【问题描述】:

我有一个需要连接到多个对等点的 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. 是否需要在每个peer中创建多个CFSocket?
  5. 如果是,如何?他们有任何可用的文件吗?
  6. 是否需要建立会话?
  7. 如何解析多个设备的地址?

【问题讨论】:

  • 您不需要重复使用单个 currentResolve 对象。每次通过循环动态创建一个,并将对它们的引用存储在一个数组中,以便在超时后进行检索/处理。

标签: objective-c ios wifi nsnetservice cfsocket


【解决方案1】:

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

我认为this tutorial 会实现你的目标。

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

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

它是在 MIT 许可下发布的,这意味着您可以随意修改和重用它

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

实现的

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

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

是的,你可以

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

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

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

我的建议是 TCP

您的问题的其余答案可以从示例 Chatty 应用程序中轻松理解 :)

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

【讨论】:

    【解决方案2】:

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

    1. 游戏中心

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多