我读过一篇名为“wifi直接多组网络中以内容为中心的路由”的文章,在这篇文章中,它告诉我们实现组间通信的方法,但我无法用android中的程序实现它设备,如果有人对此问题感兴趣,请与我联系!!!!!
答案 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。
要实现此目的,您需要执行以下操作:
如本文所述,将存在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?的答案所述。