2014-01-20 42 views
0

我需要使用Java獲得附近的BSSID與他們的信號強度。 類似於netsh wlan show networks mode=BSSID的輸出。在Java中獲取附近的BSSID和信號強度

可能嗎?

+1

「有可能嗎?」是。 「這簡單嗎?」可能不會。這可能需要平臺特定的代碼,所以對於什麼平臺?你的命令是否在平臺上工作?如果是這樣,你可以用'ProcessBuilder'來執行。 –

+0

窗戶,主要是。是的,這個命令在Windows上工作,但如果可能的話,我需要一個純Java解決方案。謝謝你的評論! –

+1

請注意,如果沒有一些JNI代碼,「純Java」解決方案可能是不可能的,這使得它成爲特定平臺。最好的辦法是在Windows上通過'ProcessBuilder'使用'netsh',爲其他需要定位的操作系統尋找類似的機制。 –

回答

0

嘗試實現像這樣的方法:(當然,在cmd字符串中保存的命令僅適用於窗口操作系統)。

「wlanResults.append(」...「);」只是將結果寫入gui的一個jTextArea中(它是我正在開發的程序的一部分)。

public void getWLANbssidInfo(){ 
    String cmd = "netsh wlan show network mode=bssid"; 

     try { 

      Process p3; 
      p3 = Runtime.getRuntime().exec("cmd /c " + cmd); 
      p3.waitFor(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(p3.getInputStream())); 
      String line = reader.readLine(); 
      while(line!=null){ 
       wlanResults.append(line + "\n"); 
       System.out.println(line); 
       line = reader.readLine(); 
      } 
     } catch (IOException ex) { 

      wlanResults.append("Comand error\n" + ex); 
      System.out.println("There was an IO exception."); 

     } catch (InterruptedException ex) { 
      wlanResults.append("Command was interrupted: " + ex); 
      System.out.println("The command was interrupted."); 
     } 

}