2016-04-28 40 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