2015-11-07 3 views
0

Я разрабатываю Java-программу на платформе Windows. Я хочу получить доступ к данным интерфейса Wi-Fi, таким как SSID, ip, подсеть, включен или нет, подключен или нет и так далее. В настоящее время я пытаюсь использовать команды netsh, ipconfig. Например, вот как я получаю подключенный SSID. Это хорошо? Есть ли более простой способ? Заранее спасибо.Доступ к данным сетевого интерфейса Wi-Fi с Java с помощью netsh

Будет ли этот код работать во всех версиях Windows без каких-либо проблем?

String ssid; 
ProcessBuilder builder = new ProcessBuilder(
     "cmd.exe", "/c", "netsh wlan show interfaces"); 
builder.redirectErrorStream(true); 
Process p = builder.start(); 
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line; 
while (true) { 
    line = r.readLine(); 
    if (line.contains("SSID")){ 
     ssid = line.split("\\s+")[3]; 
     System.out.println(ssid); 
     return ssid; 
    } 
} 
+0

ли ваш код работать? Если да, то почему вы задаете этот вопрос? Должны быть какие-то проблемы или сомнения в том, что у вас есть, или вы не спросите. Пожалуйста, опубликуйте это здесь, чтобы люди могли ответить на это. В противном случае ваш вопрос слишком широк, чтобы ответить. –

+0

Да, этот код работает. Я надеюсь писать как библиотеку, чтобы получить доступ ко всем свойствам, связанным с WiFi. Что я хочу знать, будет ли этот код работать со всеми версиями Windows без каких-либо проблем? –

+1

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он может лучше сочетаться с Code Review (с просьбой наилучшим образом). –

ответ

1

В приложении NetSh.exe из ОС Windows для ОС Windows существуют различия.

Reference Microsoft Command-Line на NETSH гласит: "Есть функциональные различия между NETSH команд на Windows Server® 2003, Windows Server® 2008 и Windows Server® 2008 R2:"

означая существуют различия в XP , Vista и Windows 7. Однако только потому, что есть изменения, это не означает, что вы не можете попробовать протестировать несколько команд, которые вы хотите использовать в своем приложении. Я говорю это, потому что NetSh.exe имеет действительно большой набор возможностей с множеством подкоманд, охватывающих многие сетевые технологии.

Чтобы проверить отличия от ОС до ОС, вы можете использовать скрипт, список меню помощи NetSh.exe на нескольких ОС или сравнить примеры команд на веб-сайте Microsoft (по ссылке ниже).

У RobVanderwoude есть сценарий, показывающий все подкоманды для NetSh. Если вы сделали скрипт еще дальше, вы могли бы просмотреть все примеры подкоманд и сравнить результат между ОС.

Тем не менее, вам нужно проверить команду вручную на каждой ОС или подтвердить, от людей, которым вы доверяете, что определенная команда работала в ОС.

netsh.exe CLI Ref: https://technet.microsoft.com/en-us/library/ee404790.aspx

NETSH Помощь Сценарий: http://www.robvanderwoude.com/netsh.php