在项目中有时候需要知道服务器的状态,或者某个IP的连接状态。用ping来获取这个状态是windows经常用到的,那么,我们也可以在代码使用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(tag , "exec(su)="+ping("www.baidu.com"));
ping("192.1.1.1");
}
});
}
public boolean ping(String str) {
boolean resault = false;
Process p;
try {
p = Runtime.getRuntime().exec("ping -c 1 -w 10 " + str);
int status = p.waitFor();
Log.i(tag, str+"#ping#status " + status);
if (status == 0) {//访问成功
resault = true;
} else {
resault = false;
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return resault;
}
其中的"ping -c 1 -w 10 "意思是,ping一次,超时时间10秒。
既然是访问服务器,所以千万不要忘记网络访问权限, 要不然找问题找死自己。
<uses-permission android:name="android.permission.INTERNET"/>
运行结果:
转载请联系作者并注明出处