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