Мой компьютер возвращается в автономном режиме в локальной сети для моего Android - PullRequest
0 голосов
/ 29 мая 2019

Я хотел сделать пробуждение по приложению локальной сети, поэтому приложение в Android капало и искало сети, доступные для выбора пользователем, но целевая сеть, которая была бы моим компьютером (192.168.0.10), возвращается ложный Есть идеи, почему это происходит? зная, что хост-сервер (192.168.0.1) и устройство (192.168.0.12) возвращают значение true.

Изображение, показывающее проблему:

enter image description here

Кстати, если я запускаю приложение на своем компьютере, оно отлично работает.

public class conectarRede extends AsyncTask<String, Void, Void> {
Context contexto;

public conectarRede(Context contexto){
    this.contexto = contexto;
}

protected Void doInBackground(String... dados) {
    String nomeLog = "redesDisponiveis";
    Log.i(nomeLog,"rodando..");
    Enumeration e = null;
    try {
        e = NetworkInterface.getNetworkInterfaces();
    } catch (SocketException e1) {
        e1.printStackTrace();
    }
    while(e.hasMoreElements())
    {
        NetworkInterface n = (NetworkInterface) e.nextElement();
        byte[] macCru = new byte[0];
        try {
            macCru = n.getHardwareAddress();
        } catch (SocketException e1) {
            e1.printStackTrace();
        }
        if(macCru != null){
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < macCru.length; i++) {
                sb.append(String.format("%02X%s", macCru[i], (i < macCru.length - 1) ? "-" : ""));
            }
            String mac = sb.toString();
            Log.i(nomeLog,"Mac do dispositivo : " + mac);
        }

        Enumeration ee = n.getInetAddresses();
        while (ee.hasMoreElements())
        {
            InetAddress i = (InetAddress) ee.nextElement();
            String ip = i.getHostAddress();
            String sip = ip.substring(0, ip.indexOf('.',ip.indexOf('.',ip.indexOf('.')+1) + 1) + 1);
            try {
                for(int it=1;it<=255;it++)
                {
                    String ipToTest = sip+it;
                    Log.i(nomeLog,"Vendo o ip : " + ipToTest);
                    //WHERE IS RETURNING FALSE TO IP 192.168.0.10
                    boolean online = InetAddress.getByName(ipToTest).isReachable(1000);
                    Log.i(nomeLog, "retornou " + online);
                    if (online) {
                        Log.i(nomeLog,ipToTest+" is online");
                        Log.i(nomeLog, InetAddress.getByName(ipToTest).getHostName());
                    }

                }
            } catch (IOException e1) {
                Log.i(nomeLog, sip);
            }
        }
    }  
    return null;
}

protected void onPostExecute(String nome) {
}
}

Я ожидал вернуть true, если IP имеет 192.168.0.10 и, если возможно, получить его MAC

...