android ping 命令使用问题

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


大部分手机使用此命令正常,但三星手机无法使用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 ping 命令使用问题)