2011-03-09 236 views
4

我想製作連接到Wifi網絡的Android應用程序,例如網絡SSID =「ABC」。假設它連接到Wifi ABC。連接到ABC後,我希望我的應用程序顯示連接到同一個無線網絡ABC網絡的所有Android設備的ips。我怎麼能做到這一點?謝謝檢測連接到Wifi的Android設備

+0

歡迎來到Stack Overflow!請避免使用答案發布其他信息或跟進對其他答案的答覆。只需編輯您的問題以提供澄清,或者使用每個發佈的答案下的評論直接與其作者進行交互。 – 2011-03-12 08:37:07

回答

1

您將要使用tcpdump將網卡置於promiscous模式,然後捕獲數據包以確定您的網絡上還有其他客戶端。

如何使用tcpdump的Android上:您的手機上的/ proc /淨/ ARP: http://source.android.com/porting/tcpdump.html

你可以在你的代碼像這樣運行命令:

try { 
    // Executes the command. 
    Process process = Runtime.getRuntime().exec("/system/bin/ls /sdcard"); 

    // Reads stdout. 
    // NOTE: You can write to stdin of the command using 
    //  process.getOutputStream(). 
    BufferedReader reader = new BufferedReader(
      new InputStreamReader(process.getInputStream())); 
    int read; 
    char[] buffer = new char[4096]; 
    StringBuffer output = new StringBuffer(); 
    while ((read = reader.read(buffer)) > 0) { 
     output.append(buffer, 0, read); 
    } 
    reader.close(); 

    // Waits for the command to finish. 
    process.waitFor(); 

    return output.toString(); 
} catch (IOException e) { 
    throw new RuntimeException(e); 
} catch (InterruptedException e) { 
    throw new RuntimeException(e); 
} 
+1

假設我正在接收爲所有設備指定的數據包,其中包括任何連接到無線網絡的計算機或移動設備,如何通過查看數據包來區分Android設備和非Android設備?通過發送/接收數據包的應用程序可以區分數據包/進程嗎? – Farhan 2011-03-12 06:06:31

4

簽出該文件。

它具有連接到同一網絡的所有其他設備的ip和MAC addreses。不過,我擔心你不能區分,如果他們是Android手機或不。