如何在wifi直连网络中实现组间通信?

时间:2016-04-28 14:31:59

标签: wifi-direct

我读过一篇名为“wifi直接多组网络中以内容为中心的路由”的文章,在这篇文章中,它告诉我们实现组间通信的方法,但我无法用android中的程序实现它设备,如果有人对此问题感兴趣,请与我联系!!!!!

1 个答案:

答案 0 :(得分:1)

首先,对于那些没有访问IEEE数字图书馆的人,这里有一个链接到本研究的Arxiv PDF:http://arxiv.org/pdf/1412.0880v1.pdf

Wi-Fi Direct规范允许传统设备(即没有Wi-Fi Direct的设备)使用其Wi-Fi接口连接到Wi-Fi Direct GO。这项研究的作者使用它来允许GO成为另一组的客户。所以GO在P2P接口上有客户端,并且还使用其传统的Wi-Fi接口连接到另一个GO。

要实现此目的,您需要执行以下操作:

  1. 允许GO获取其Wi-Fi Direct组密码/密钥。
  2. 将密码安全地分发给其他GO。
  3. 允许GO使用传统Wi-Fi连接连接到其他GO。
  4. 如本文所述,将存在IP地址冲突,因此在IP层将无法在所有设备对之间进行消息传递,例如,一个GO的客户端将无法与另一个客户端的客户端通信。要解决此问题,您需要在应用程序层实现消息传递层。

    首先,从文档中,我们知道我们可以使用WifiP2pManager.createGroup (WifiP2pManager.Channel c, WifiP2pManager.ActionListener listener)方法启动可以接受传统连接的P2P组,并且可以使用WifiP2pManager.requestGroupInfo (WifiP2pManager.Channel c, WifiP2pManager.GroupInfoListener listener)获取其详细信息。 onGroupInfoAvailable(WifiP2pGroup group) GroupInfoListener方法允许我们访问代表该组的WifiP2pGroup对象。 WifiP2pGroup.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() 
                    }
                }
            });
    

    分发了密码后,GO可以以编程方式连接到另一个GO,如How to connect to a specific wifi network in Android programmatically?的答案所述。