Как получить список активных устройств в текущей сети WiFi?

#android

#Android

Вопрос:

Извините, если такой вопрос уже существует, но я не могу найти ответа, который мог бы мне помочь.

Я пытаюсь найти способ получить список ip MAC-адресов устройств, существующих в активной сети.

Есть ли способ сделать это с помощью java или c , а затем внедрить его в Java-приложение для Android?

Ответ №1:

этот фрагмент кода выполняет поиск устройств в сети wifi Network…

 package com.example.deviceswichisconnected;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    private int LoopCurrentIP = 0;
    String ad ;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //ArrayList<InetAddress> ar = getConnectedDevices( );

    }



    public ArrayList<InetAddress> getConnectedDevices(String YourPhoneIPAddress) {
        ArrayList<InetAddress> ret = new ArrayList<InetAddress>();

        LoopCurrentIP = 0;

        String IPAddress = "";
        String[] myIPArray = YourPhoneIPAddress.split("\.");
        InetAddress currentPingAddr;


        for (int i = 0; i <= 255; i  ) {
            try {

                // build the next IP address
                currentPingAddr = InetAddress.getByName(myIPArray[0]   "."  
                        myIPArray[1]   "."  
                        myIPArray[2]   "."  
                        Integer.toString(LoopCurrentIP));
                ad = currentPingAddr.toString();   /////////////////
                Log.d("MyApp",ad);                 //////////////

                // 50ms Timeout for the "ping"
                if (currentPingAddr.isReachable(50)) {

                    ret.add(currentPingAddr);
                    ad = currentPingAddr.toString();        /////////////////
                    Log.d("MyApp",ad);                     //////////////
                }
            } catch (UnknownHostException ex) {
            } catch (IOException ex) {
            }

            LoopCurrentIP  ;
        }
        return ret;
    }
}
  

Ответ №2:

Взгляните на Bonjour/Zeroconf: http://android.noisepages.com/2010/02/yes-android-can-do-zeroconfbonjour-jmdns/

Но не надейтесь на создание списка всех устройств в вашей локальной сети, если у вас каким-то образом нет доступа к ее маршрутизатору.

Комментарии:

1. Хм .. Похоже, это может помочь, но я не могу включить эту библиотеку javax в проект. Он выдает ошибки «Импорт javax.jmdns не может быть разрешен», я думаю, это потому, что Android не реализует весь движок Java SE : (