我試圖通過Wi-Fi直接宣傳Bonjour服務。這裏是代碼:未發現Android wi-fi p2p服務
manager.clearLocalServices(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Map<String, String> record = new HashMap<>();
record.put("qwe", "123");
WifiP2pDnsSdServiceInfo serviceInfo = WifiP2pDnsSdServiceInfo.newInstance("_test", "_presence._tcp", record);
manager.addLocalService(channel, serviceInfo, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {}
@Override
public void onFailure(int reason) {}
});
}
@Override
public void onFailure(int reason) {}
});
}
@Override
public void onFailure(int reason) {}
});
在卡利的Linux我用wpi_cli發現服務
> p2p_serv_disc_req 00:00:00:00:00:00 02000001
> p2p_find
卡利成功發現Android的,我看到相應的信息:
P2P-DEVICE-FOUND 70:0b:c0:ac:63:11 p2p_dev_addr=70:0b:c0:ac:63:11 pri_dev_type=10-0050F204-5 name='PSP5506DUO' config_methods=0x188 dev_capab=0x25 group_capab=0x0 new=1
但沒有後續有關服務被發現。
我該如何確保在哪一方面是問題? Android是否不宣傳服務,或者Kali沒有發現它?
更通用的問題 - 是否有工作 wi-fi p2p服務廣告和發現Android應用程序的例子?
試過你的代碼,它的工作原理!將會看到,我的實現有什麼不同,因爲我的代碼不適用於Android-Android和Android-Kali對。非常感謝。 – Alexey
不幸的是,工程非常不可靠 - 只是幾十個發現中的一個發現鄰居的服務。在日誌中,我看到了由Android SDK庫發送的wpa_supplicant命令序列,看起來正確。必須是糟糕的網絡層或驅動程序性能... – Alexey
這種排隊與我的經驗。你必須認識到,發現可能非常緩慢。所以你需要有耐心。從字面上講,可能需要2分鐘才能發現同伴,儘管有時候它似乎會立即發生。我不記得在上面的代碼中是否有一個,但是如果它沒有被發現,你可以放入一個按鈕來重播這個服務。 –