Lista de dispositivos en red local con ping

Estoy intentando crear una función que enumera todos los dispositivos conectados en una red local. Lo que hago es hacer ping a cualquier dirección desde el espacio de direcciones x.x.x.0 a x.x.x.255, pero no parece funcionar correctamente. ¿Alguien podría explicar o ampliar mi código de alguna manera? Recibo una respuesta del teléfono (10.0.0.17) y una puerta de enlace predeterminada (10.0.0.138). Este último ni siquiera debería estar allí (de hecho, no sé qué es una puerta de enlace predeterminada, pero ignórelo). Sin embargo, me falta la IP de esta computadora.

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));

            // 50ms Timeout for the "ping"
            if (currentPingAddr.isReachable(50)) {
                if(currentPingAddr.getHostAddress() != YourPhoneIPAddress){
                    ret.add(currentPingAddr);

                }
            }
        } catch (UnknownHostException ex) {
        } catch (IOException ex) {
        }

        LoopCurrentIP++;
    }
    return ret;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta