library/src/main/java/com/qiniu/android/netdiag/DNS.java
private static InetAddress[] getByCommand() {
        try {
            Process process = Runtime.getRuntime().exec("getprop");
            InputStream inputStream = process.getInputStream();
            LineNumberReader lnr = new LineNumberReader(
                    new InputStreamReader(inputStream));
            String line = null;
            ArrayList<InetAddress> servers = new ArrayList<InetAddress>(5);
            while ((line = lnr.readLine()) != null) {
                int split = line.indexOf("]: [");
                if (split == -1) {
                    continue;
                }
                String property = line.substring(1, split);
                String value = line.substring(split + 4, line.length() - 1);
                if (property.endsWith(".dns") || property.endsWith(".dns1") ||
                        property.endsWith(".dns2") || property.endsWith(".dns3") ||
                        property.endsWith(".dns4")) {

                    // normalize the address

                    InetAddress ip = InetAddress.getByName(value);

                    if (ip == null) continue;

                    value = ip.getHostAddress();

                    if (value == null) continue;
                    if (value.length() == 0) continue;

                    servers.add(ip);
                }
            }
            if (servers.size() > 0) {
                return servers.toArray(new InetAddress[servers.size()]);
            }
        } catch (IOException e) {
            Logger.getLogger("AndroidDnsServer").log(Level.WARNING, "Exception in findDNSByExec", e);
        }
        return null;
    }
private static InetAddress[] getByCommand() {
        try {
            Process process = Runtime.getRuntime().exec("getprop");
            InputStream inputStream = process.getInputStream();
            LineNumberReader lnr = new LineNumberReader(
                    new InputStreamReader(inputStream));
            String line = null;
            ArrayList<InetAddress> servers = new ArrayList<InetAddress>(5);
            while ((line = lnr.readLine()) != null) {
                int split = line.indexOf("]: [");
                if (split == -1) {
                    continue;
                }
                String property = line.substring(1, split);
                String value = line.substring(split + 4, line.length() - 1);
                if (property.endsWith(".dns") || property.endsWith(".dns1") ||
                        property.endsWith(".dns2") || property.endsWith(".dns3") ||
                        property.endsWith(".dns4")) {

                    // normalize the address

                    InetAddress ip = InetAddress.getByName(value);

                    if (ip == null) continue;

                    value = ip.getHostAddress();

                    if (value == null) continue;
                    if (value.length() == 0) continue;

                    servers.add(ip);
                }
            }
            if (servers.size() > 0) {
                return servers.toArray(new InetAddress[servers.size()]);
            }
        } catch (IOException e) {
            Logger.getLogger("AndroidDnsServer").log(Level.WARNING, "Exception in findDNSByExec", e);
        }
        return null;
    }
private static InetAddress [ ] getByCommand ( ) { try { Process process = Runtime . getRuntime ( ) . exec ( "getprop" ) ; InputStream inputStream = process . getInputStream ( ) ; LineNumberReader lnr = new LineNumberReader ( new InputStreamReader ( inputStream ) ) ; String line = null ; ArrayList < InetAddress > servers = new ArrayList < InetAddress > ( 5 ) ; while ( ( line = lnr . readLine ( ) ) != null ) { int split = line . indexOf ( "]: [" ) ; if ( split == - 1 ) { continue ; } String property = line . substring ( 1 , split ) ; String value = line . substring ( split + 4 , line . length ( ) - 1 ) ; if ( property . endsWith ( ".dns" ) || property . endsWith ( ".dns1" ) || property . endsWith ( ".dns2" ) || property . endsWith ( ".dns3" ) || property . endsWith ( ".dns4" ) ) { // normalize the address InetAddress ip = InetAddress . getByName ( value ) ; if ( ip == null ) continue ; value = ip . getHostAddress ( ) ; if ( value == null ) continue ; if ( value . length ( ) == 0 ) continue ; servers . add ( ip ) ; } } if ( servers . size ( ) > 0 ) { return servers . toArray ( new InetAddress [ servers . size ( ) ] ) ; } } catch ( IOException e ) { Logger . getLogger ( "AndroidDnsServer" ) . log ( Level . WARNING , "Exception in findDNSByExec" , e ) ; } return null ; }
15ms
15ms