Я делаю программу на Java, где ей нужно распечатать список доступных имен WiFi, SSID, в консоли, разделенных точками с запятой.Распечатать список WiFi-SSID?
Так как: wifi1; thekingswifi; otherwifi
Я делаю программу на Java, где ей нужно распечатать список доступных имен WiFi, SSID, в консоли, разделенных точками с запятой.Распечатать список WiFi-SSID?
Так как: wifi1; thekingswifi; otherwifi
Запрос данных Wi-Fi в системе, к сожалению, OS конкретные поэтому не является общей библиотеки, чтобы сделать это.
Тем не менее, вот класс, который я написал, который использует утилиту командной строки Windows netsh для извлечения SSID и возврата их в строку JSON. Аналогичные утилиты существуют и для других операционных систем, которые можно использовать для достижения такого же эффекта. Надеюсь, этот класс поможет вам начать.
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WindowsNetworkHelper
{
public String getSsidsJson(String regex) throws Exception
{
Runtime rt = Runtime.getRuntime();
try
{
Process pr = rt.exec("netsh wlan show networks mode=bssid");
String processOutput = processOutputToString(pr);
ArrayList<String> ssidList = extractSsids(processOutput,regex);
String result = "[";
boolean addComma = false;
for(String ssid : ssidList)
{
if(addComma)
{
result += ",";
}
result += "{\"ssid\":\"" + ssid + "\"}";
addComma = true;
}
result += "]";
return result;
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return "[]";
}
private ArrayList<String> extractSsids(String result,String regex)
{
ArrayList<String> ssids = new ArrayList<String>();
String[] lines = result.split("\r\n\r\n");
Pattern ssidPattern = Pattern.compile("^SSID [0-9]+ : (.+)");
for(String line : lines)
{
Matcher ssidMatcher = ssidPattern.matcher(line);
if(ssidMatcher.find())
{
String capture = ssidMatcher.group(1);
if(ssidMatchesFilter(capture,regex))
{
ssids.add(capture);
}
}
}
return ssids;
}
private boolean ssidMatchesFilter(String ssid,String regex)
{
if(regex == null)
{
return true;
}
Pattern filterPattern = Pattern.compile(regex);
Matcher filterMatcher = filterPattern.matcher(ssid);
return filterMatcher.matches();
}
private String processOutputToString(Process pr)
{
InputStream is = pr.getInputStream();
java.util.Scanner s = new java.util.Scanner(is);
s.useDelimiter("\\A");
String result = s.hasNext() ? s.next() : "";
s.close();
return result;
}
}
@LawrenceAiello Вы знаете, что вместо того, чтобы быть рывком, вы действительно можете использовать его. –
@WizGamin, я с тобой - это было неуместно. Однако ваш вопрос не очень ясен. Не могли бы вы обновить его образцом написанного вами кода и объяснить, какая часть его не работает для вас? –
@ SimonMᶜKenzie, где я застрял ... по существу ему нужно найти ближайший Wi-Fi, а затем сказать имена этих wifi –