Я создаю приложение для сканирования IP и MAC всех устройств, подключенных к сети, но я могу получить только их IP, а когда я получаю IP-адреса, оно делает это не очень хорошо, оно получает только от сотовые телефоны, но не с ноутбуков или компьютеров, подключенных к маршрутизатору с помощью кабеля.
Я пытался сделать это с помощью arp -a, но это больше не работает на Android 13.
Я вижу, что некоторые приложения, такие как
Сетевой сканер и Wi-FI Monitor могут получить IP и MAC
На данный момент это мой код, но он получает только IP-адреса и не сканирует все устройства. Может ли кто-нибудь помочь мне правильно получить все устройства с их IP и MAC?
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final int REQUEST_CODE_PERMISSIONS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_WIFI_STATE
}, REQUEST_CODE_PERMISSIONS);
}
Button scanButton = findViewById(R.id.scanButton);
scanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new ScanNetworkTask().execute();
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE_PERMISSIONS) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
findViewById(R.id.scanButton).setEnabled(true);
} else {
Log.e(TAG, "Permissions denied by user.");
findViewById(R.id.scanButton).setEnabled(false);
}
}
}
private class ScanNetworkTask extends AsyncTask {
@Override
protected Void doInBackground(Void... voids) {
try {
scanNetwork();
} catch (IOException e) {
Log.e(TAG, "IOException in scanNetwork: ", e);
}
return null;
}
private void scanNetwork() throws IOException {
try {
NetworkInterface wlan0 = NetworkInterface.getByName("wlan0");
if (wlan0 != null && wlan0.isUp()) {
Enumeration addresses = wlan0.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (address.isLoopbackAddress() || !address.isSiteLocalAddress()) {
continue;
}
String subnet = getSubnet(address.getHostAddress());
Log.d(TAG, "Scanning subnet: " + subnet);
for (int i = 1; i < 255; i++) {
String host = subnet + i;
try {
InetAddress inetAddress = InetAddress.getByName(host);
if (inetAddress.isReachable(1000)) {
Log.d(TAG, "Host: " + inetAddress.getHostAddress() + " is reachable");
Log.d(TAG, "Hostname: " + inetAddress.getHostName());
}
} catch (IOException e) {
Log.e(TAG, "IOException in scanNetwork: ", e);
}
}
}
}
} catch (SocketException e) {
Log.e(TAG, "SocketException in scanNetwork: ", e);
}
}
private String getSubnet(String ipAddress) {
return ipAddress.substring(0, ipAddress.lastIndexOf('.') + 1);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... uter-on-an
Сканируйте IP и MAC всех локальных устройств, подключенных к сети Wi-Fi или маршрутизатору на Android 13. ⇐ JAVA
Программисты JAVA общаются здесь
1722386122
Anonymous
Я создаю приложение для сканирования IP и MAC всех устройств, подключенных к сети, но я могу получить только их IP, а когда я получаю IP-адреса, оно делает это не очень хорошо, оно получает только от сотовые телефоны, но не с ноутбуков или компьютеров, подключенных к маршрутизатору с помощью кабеля.
Я пытался сделать это с помощью arp -a, но это больше не работает на Android 13.
Я вижу, что некоторые приложения, такие как
Сетевой сканер и Wi-FI Monitor могут получить IP и MAC
На данный момент это мой код, но он получает только IP-адреса и не сканирует все устройства. Может ли кто-нибудь помочь мне правильно получить все устройства с их IP и MAC?
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final int REQUEST_CODE_PERMISSIONS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_WIFI_STATE
}, REQUEST_CODE_PERMISSIONS);
}
Button scanButton = findViewById(R.id.scanButton);
scanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new ScanNetworkTask().execute();
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE_PERMISSIONS) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
findViewById(R.id.scanButton).setEnabled(true);
} else {
Log.e(TAG, "Permissions denied by user.");
findViewById(R.id.scanButton).setEnabled(false);
}
}
}
private class ScanNetworkTask extends AsyncTask {
@Override
protected Void doInBackground(Void... voids) {
try {
scanNetwork();
} catch (IOException e) {
Log.e(TAG, "IOException in scanNetwork: ", e);
}
return null;
}
private void scanNetwork() throws IOException {
try {
NetworkInterface wlan0 = NetworkInterface.getByName("wlan0");
if (wlan0 != null && wlan0.isUp()) {
Enumeration addresses = wlan0.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (address.isLoopbackAddress() || !address.isSiteLocalAddress()) {
continue;
}
String subnet = getSubnet(address.getHostAddress());
Log.d(TAG, "Scanning subnet: " + subnet);
for (int i = 1; i < 255; i++) {
String host = subnet + i;
try {
InetAddress inetAddress = InetAddress.getByName(host);
if (inetAddress.isReachable(1000)) {
Log.d(TAG, "Host: " + inetAddress.getHostAddress() + " is reachable");
Log.d(TAG, "Hostname: " + inetAddress.getHostName());
}
} catch (IOException e) {
Log.e(TAG, "IOException in scanNetwork: ", e);
}
}
}
}
} catch (SocketException e) {
Log.e(TAG, "SocketException in scanNetwork: ", e);
}
}
private String getSubnet(String ipAddress) {
return ipAddress.substring(0, ipAddress.lastIndexOf('.') + 1);
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78814071/scan-ip-and-mac-of-all-local-devices-connected-to-a-wifi-network-or-router-on-an[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия