android ping 命令使用问题

private boolean ping(String host) {
		boolean result = false;
		try {
			Process p = Runtime.getRuntime().exec("ping -c 1 -i 0.2 -w 1 " + host);
			int status = p.waitFor();
			if (status == 0) {
				result = true;
			}
		} catch (IOException e1) {
			e1.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return result;
	}


大部分手机使用此命令正常,但三星手机无法使用ping。下文是Ping & DNS应用的描述。

Samsung devices: Ping and Traceroute no longer work on some Samsung devices on Android 4.2 and newer; there's unfortunately nothing I can do about that - Samsung removed needed functionality.

原文:https://play.google.com/store/apps/details?id=com.ulfdittmer.android.ping&hl=zh_CN


改用接连方式

private boolean connect(String host, int port) {
		if (port == 0) port = 80;

		Socket connect = new Socket();
        try {
            connect.connect(new InetSocketAddress(host, port), 10 * 1000);
            return connect.isConnected();
        } catch (IOException e) {
        	e.printStackTrace();
        }finally{
            try {
                connect.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return false;
	}


你可能感兴趣的:(Android)