Как я могу получить MAC адрес, SSID и силы сигнала из Wi-Fi маршрутизаторов рядом в Java? Предпочтительно независимая от системы, если не тогда Windows.Wifi информации в Java
ответ
Чтобы получить адрес Mac, вам необходимо запросить кеш ARP. Что не является тривиальным и зависит от системы.
Подробнее здесь: Query ARP cache to get MAC ID
Я не думаю, что есть какая-либо система независимого способа узнать, что с Java.
В Windows вы можете сделать это с помощью Wireless LAN API s, но вам, скорее всего, понадобится некоторый JNI для доступа к ним.
Я знаю, что это очень старый вопрос, но вы можете использовать команды netsh в Windows для извлечения информации wifi с помощью java. Вот сообщение в блоге, которое я сделал по этому поводу. https://notebookbft.wordpress.com/2015/11/25/wifi-information-extraction-java/
Java не позволяет напрямую получать информацию о низком уровне. Поэтому я выполнил командную строку и запустил команды netsh внутри java, чтобы извлечь эту информацию. Ниже приведен класс, который я реализовал для этого. Обратите внимание, что это работает только в окнах.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Rajind
*/
public class Extractor {
public static String NOT_SET = "NOT_SET";
public static boolean isEnabled(){
try {
String state;
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "netsh interface show interface \"Wi-Fi\"");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = r.readLine())!=null) {
//line = r.readLine();
if (line.contains("Administrative state")){
state = line.split("\\s+")[3];
//System.out.println(state);
state = state.toLowerCase();
if(state.equals("enabled")){
return true;
}else{
return false;
}
}
}
} catch (IOException ex) {
Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
public static boolean isConnected(){
try {
String state;
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "netsh interface show interface \"Wi-Fi\"");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = r.readLine())!=null) {
//line = r.readLine();
if (line.contains("Connect state")){
state = line.split("\\s+")[3];
// System.out.println(state);
state = state.toLowerCase();
if(state.equals("connected")){
return true;
}else{
return false;
}
}
}
} catch (IOException ex) {
Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
public static String getConnectedSSID(){
String ssid = NOT_SET;
try {
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 ((line = r.readLine())!=null) {
//line = r.readLine();
if (line.contains("SSID")){
ssid = line.split("\\s+")[3];
// System.out.println(ssid);
return ssid;
}
}
} catch (IOException ex) {
Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
}
return ssid;
}
public static String[] getListOfSSIDs(){
String [] ssid_List;
String ssid;
ArrayList<String> arr = new ArrayList<>();
try {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "netsh wlan show networks");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = r.readLine())!=null) {
//line = r.readLine();
if (line.contains("SSID")){
ssid = line.split("\\s+")[3];
//System.out.println(ssid);
arr.add(ssid);
}
}
} catch (IOException ex) {
Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
}
ssid_List = new String[arr.size()];
arr.toArray(ssid_List);
return ssid_List;
}
public static String getIP(){
String ip = NOT_SET;
try {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "netsh interface ip show addresses \"Wi-Fi\"");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = r.readLine())!=null) {
//line = r.readLine();
if (line.contains("IP Address")){
ip = line.split("\\s+")[3];
//System.out.println(ip);
return ip;
}
}
} catch (IOException ex) {
Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
}
return ip;
}
public static String getSubnetMask(){
String sb = NOT_SET;
try {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "netsh interface ip show addresses \"Wi-Fi\"");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = r.readLine())!=null) {
//line = r.readLine();
if (line.contains("Subnet Prefix")){
sb = line.split("\\s+")[5];
sb = sb.substring(0, sb.length() - 1);
//System.out.println(sb);
return sb;
}
}
} catch (IOException ex) {
Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
}
return sb;
}
public static String getBroadcast(){
String subnetMask = getSubnetMask();
String ip = getIP();
String []arrSubnetMask = subnetMask.split("\\.");
String []arrIP = ip.split("\\.");
int []networkAddress = new int[4];
int [] broadcastAddress = new int[4];
String broadcast = "";
for(int i=0; i< 4; i++){
networkAddress[i] = Integer.parseInt(arrIP[i]) & Integer.parseInt(arrSubnetMask[i]);
//System.out.println(networkAddress[i]);
}
for(int i=0; i< 4; i++){
//broadcastAddress[i] = networkAddress[i] | (~Integer.parseInt(arrSubnetMask[i]) & 0xff);
//System.out.println(broadcastAddress[i]);
broadcast = broadcast + "." + (networkAddress[i] | (~Integer.parseInt(arrSubnetMask[i]) & 0xff));
}
// System.out.println(broadcast.substring(1));
//mask AND ip you get network address
//Invert Mask OR Network Address you get broadcast
return broadcast.substring(1);
}
}
- 1. Получение информации о сети WiFi
- 2. Java Wifi многопользовательский
- 3. крошечные Java WiFi устройство
- 4. Получение информации о подключенной WiFi сети в Ionic
- 5. Wifi менеджер и WiFi информация
- 6. Raspberry Pi java wifi checker
- 7. Включите разрешение на получение информации о WiFi - Android marshmallow
- 8. API геолокации HTML5 для получения информации о WiFi AC?
- 9. Невозможно получить Подключенную WiFi информации о типе поддерживается шифрование
- 10. Передача небольших объемов информации с использованием SSID WiFi?
- 11. android почему отправка информации на сервер работает только с WIFI?
- 12. Доступ к информации о WiFi для iPhone через SDK
- 13. java хранение информации в объекте
- 14. Распечатка информации deftemplate в java
- 15. Чтение последовательной информации в Java
- 16. WiFi и проверка WiFi в wifiwizard Кордове
- 17. Java - Хранение информации
- 18. Сохранение информации на Java
- 19. Коннекты в {wifi} ...}}
- 20. Audio Stream WiFi WiFi - Broadcast
- 21. Проблемы с подключением Java DatagramSocket через WiFi
- 22. Android/Java WiFi список прямых сверстников
- 23. Android Java: получить открытые WiFi-сети
- 24. java socketing programming, ip behind wifi
- 25. Сетевые устройства Windows WiFi
- 26. WiFi Direct on iOS
- 27. Отправка информации с Java на Java-скрипт?
- 28. Java: извлечение информации из HTML
- 29. Java WS Синхронизируйте процесс информации?
- 30. Сбор информации о классе Java