我想知道是否有適用於Java的Wifi API。一些可以連接到Wifi網絡並掃描它們(查找設備)的東西。我似乎無法找到類似的東西。有什麼建議麼?謝謝!Java - Wifi API
P.S. 我知道Android的WifiManager,但我沒有爲Android開發,我正在用JDK 6開發。
我想知道是否有適用於Java的Wifi API。一些可以連接到Wifi網絡並掃描它們(查找設備)的東西。我似乎無法找到類似的東西。有什麼建議麼?謝謝!Java - Wifi API
P.S. 我知道Android的WifiManager,但我沒有爲Android開發,我正在用JDK 6開發。
無線網卡根據製造商甚至版本而有很大不同,而且大多數操作系統沒有標準化的方式與他們互動。有些電腦甚至沒有配備無線網卡。 Android與其運作良好的原因是因爲Google可以保證每檯安裝了Android的手機都有適當的無線網絡接口。
TL;博士沒有,對不起
您可以連接列表wifi網絡並使用linux命令(如iwlist,wpa_supplicant,ifconfig)連接到它們。因此,如果在他們之上有一個JNI實現,那麼卡的細節將變得無關緊要。 – 2014-03-19 06:29:24
爲什麼python的wifi模塊可以做到呢? – Nabin 2014-08-15 16:36:40
你可以利用命令行工具幫助才能使用命令「netsh的WLAN網絡顯示模式= BSSID」可用網絡列表。 請在下面嘗試java方法。
public static ArrayList scanWiFi() {
ArrayList<String> networkList = new ArrayList<>();
try {
// Execute command
String command = "netsh wlan show networks mode=Bssid";
Process p = Runtime.getRuntime().exec(command);
try {
p.waitFor();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
BufferedReader reader = new BufferedReader(
new InputStreamReader(p.getInputStream())
);
String line;
StringBuilder sb = new StringBuilder();
String ssidArr[];
while ((line = reader.readLine()) != null) {
//System.out.println(line);
if (line.contains("SSID ") && !line.contains("BSSID ")) {
sb.append(line);
networkList.add(line.split(":")[1]);
//System.out.println("data : " + ssidArr[1]);
}
}
//System.out.println(networkList);
} catch (IOException e) {
}
return networkList;
}
我會說「除JNI之外」是一個禁忌。這看起來非常像一個操作系統特定的任務。例如。你必須在Windows上使用WMI,在Loonix上使用[Wireless Tools](http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html),我猜''System/Library /在OS X上的PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport',誰知道其他系統上的內容。 – millimoose 2013-04-08 01:04:12
我不使用JNI,因爲我有Ubuntu和在讀入#1的答案,我似乎遇到的想法,JNI是僅適用於Windows – 0101011 2013-04-08 01:10:30
這是明顯的錯誤。 JNI是Java的一個組成部分,它是Java實際工作所需的主要FFI機制。 (例如,在JDK中實現非本地方法的'native'方法。)也就是說,我認爲[JNA](https://github.com/twall/jna)應該更方便,如果您需要創建自己的綁定。 (實際上可能已經提供了一個綁定到WMI的東西。) – millimoose 2013-04-08 01:13:35