2014-01-20 2 views
0

Java를 사용하여 신호 강도가있는 인근 BSSID를 가져와야합니다. netsh wlan show networks mode=BSSID의 출력과 같은 것입니다.가까운 BSSID 및 Java의 신호 강도를 얻으십시오

가능합니까?

+1

"가능한가요?" 예. "쉬운 일인가?" 아마도 그렇지 않습니다. 이것은 아마도 플랫폼 특정 코드를 필요로 할 것이므로 어떤 플랫폼을 위해? 당신의 주어진 명령이 플랫폼에서 작동합니까? 그렇다면'ProcessBuilder'로 실행할 수 있습니다. –

+0

Windows, 대부분, 대부분. 예,이 명령은 Windows에서 작동하지만 가능하면 순수한 Java 솔루션이 필요합니다. 귀하의 의견을 보내 주셔서 감사합니다! –

+1

일부 JNI 코드가 없으면 "순수 Java"솔루션이 불가능할 가능성이 높으므로 플랫폼 별입니다. 가장 좋은 방법은 Windows에서'ProcessBuilder'를 통해'netsh '를 사용하는 것입니다. 여러분이 목표로해야 할 다른 OS에 대해 비슷한 메커니즘을 찾는 것입니다. –

답변

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."); 
     } 

} 
관련 문제