Как получить все адреса Ip и Mac подключенных устройств к локальной сети с помощью Java - PullRequest
1 голос
/ 10 апреля 2019

Я создаю проект Java, который показывает имя хоста, IP-адрес и MAC-адрес подключенных устройств с использованием Java.Я использую InetAddress, но он показывает только Ip и имя хоста подключенных компьютеров без MAC, а также не видит подключенные мобильные телефоны, такие как устройства Android.

Я испробовал почти все решения на StackOverFlow, но ни одна из тем не работает

public class HostDiscovery
{
    private String address;
    private int discoveryTimeout;

    HostDiscovery( String address,  int discoveryTimeout)
    {
       this.address = address;
       this.discoveryTimeout = discoveryTimeout;
    }

    public Future<HostDiscoveryResult> multithreadedHostDicovery(final ExecutorService exService){
        return exService.submit(() -> {
            try
            {
                String HostName = null;
                String MacAddress = null;
                boolean result = InetAddress.getByName(address).isReachable(discoveryTimeout);
                InetAddress ip = InetAddress.getByName(address);
                 if (result)
                {

                    HostName = InetAddress.getByName(address).getHostName();
                    if(HostName.endsWith(".mshome.net")){
                        HostName = HostName.replaceAll(".mshome.net", "");
                    }
                    MacAddress = getMacAddress(ip);
                }
                return new HostDiscoveryResult(address, result, HostName, MacAddress);
            } catch (SocketException ex)
            {
                return new HostDiscoveryResult(address, false, null, null);
            }
        });
    }



   private static String getMacAddress(InetAddress ip) throws UnknownHostException {
        String address = null;
        try {
            NetworkInterface network = NetworkInterface.getByInetAddress(ip);
            byte[] mac = network.getHardwareAddress();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < mac.length; i++) {
                sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
            }
            address = sb.toString();

        } catch (SocketException ex) {

            ex.printStackTrace();

        }

        return address;
    }




}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...