2012-01-12 30 views
4

我有一個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

回答

0

根據您的應用程序的性質,您可以使用GamKit框架,它會提供比您要求的更多的功能。以下是要採取的預防措施。這顯示任何玩家ID

  1. 遊戲中心

6.1 應用程序向最終用戶或任何第三方都將被拒絕 6.2 應用程序使用玩家ID超過所批准的遊戲之外的任何使用中心方面將被拒絕 6.3 開發商試圖反向查找,跟蹤聯繫,聯想,礦山,收穫,或以其他方式利用玩家ID,別名,或通過遊戲中心獲得的其他信息將被從iOS開發者計劃 刪除6.4 遊戲中心信息(例如排行榜分數)只能用於經批准與Game Center一起使用的應用程序 6.5 使用Game Center服務發送未經請求的消息或用於網絡釣魚或垃圾郵件的應用程序將被拒絕 6.6 應用程式過度使用遊戲中心的網絡容量或帶寬將被拒絕 6。7個 應用程序來傳播病毒,文件,計算機代碼或程序,可能損害或破壞遊戲中心服務的正常運行將被拒絕

8

它相當困難,因爲你需要修改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網絡