2016-04-28 81 views
0

我已經閱讀了一篇名爲「在wifi直接多組網絡中以內容爲中心的路由」的文章,在這篇文章中,它告訴我們實現組間通信的方法,但是我無法用android設備中的程序來實現它如果有人對這個問題有興趣,請聯繫我!!!!!如何在wifi直接網絡中實現組間通信?

+0

聽起來有趣,但沒有鏈接到文件,它是不可能的幫助。 –

+0

該文章的鏈接--- http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber = 7158136 – WangBing

回答

1

首先,對於那些沒有IEEE數字圖書館的訪問,這裏是這項研究的的arXiv PDF鏈接:http://arxiv.org/pdf/1412.0880v1.pdf

了Wi-Fi Direct的規範允許遺留設備(即設備沒有Wi-Fi無線直接)使用其Wi-Fi接口連接到Wi-Fi Direct GO。這項研究的作者已經使用它來允許GO成爲另一組中的客戶。所以GO在P2P接口上有客戶端,並且使用其傳統的Wi-Fi接口連接到另一個GO。

要實現這一點,你需要做到以下幾點:

  1. 允許GOS獲得他們的Wi-Fi Direct的組密碼/密鑰。
  2. 將密碼安全地分配給其他GO。
  3. 允許GO使用傳統Wi-Fi連接來連接其他GO。

當紙描述,將會有IP地址衝突,因此,所有對設備之間的消息傳送在IP層,例如將是不可能的一個GO的客戶端將無法與另一個客戶端進行通信。爲了克服這個問題,您需要在應用程序層實現消息傳遞層。

首先,從文檔中,我們知道我們可以啓動一個可以使用WifiP2pManager.createGroup (WifiP2pManager.Channel c, WifiP2pManager.ActionListener listener)方法接受傳統連接的P2P組,並且可以使用WifiP2pManager.requestGroupInfo (WifiP2pManager.Channel c, WifiP2pManager.GroupInfoListener listener)獲取其詳細信息。 GroupInfoListeneronGroupInfoAvailable(WifiP2pGroup group)方法允許我們訪問代表組的對象WifiP2pGroupWifiP2pGroup.getPassphrase()將檢索組的密碼。現在我們有了密碼,我們可以將其分發給其他希望通過Wi-Fi連接到該組的GO的GO。

wifiP2pManager.requestGroupInfo(channel, 
      new WifiP2pManager.GroupInfoListener() { 
      @Override 
      public void onGroupInfoAvailable(WifiP2pGroup group) { 
       if(group != null){ 
        // clients require these 
        String ssid = group.getNetworkName(), 
        String passphrase = group.getPassphrase() 
       } 
      } 
     }); 

具有分佈式的passsphrase,一個GO可以連接到別的去了編程,如答案描述How to connect to a specific wifi network in Android programmatically?

+0

太棒了!你爲我節省了一個星期,非常感謝。 – Artiano