2011-06-19 59 views
2

我想在使用在线组件启动任何活动之前检查我的服务器是否在线。Android - 检查外部服务器是否在线

我已经使用ping

runtime.exec("ping -c 1 google.com"); 
proc.waitFor(); 
int exit = proc.exitValue(); 

尝试,但这个总是会给要么退出代码1或2,永远不为0,甚至当我知道服务器在线..

我也曾尝试

Online=InetAddress.getByName("www.google.com").isReachable(10000); 

但显然这个功能是与外部服务器地狱,因此它也不起作用。

当然,检查服务器是否在线等基本功能应该是非常简单的?有没有人有任何想法,我还没有尝试过呢?

回答

2

尝试连接到服务器,使用任何你将使用的协议“真实”。仅仅因为服务器对ping的响应并不意味着服务器正在运行以满足您的需要。因此,例如,如果您要发出Web服务请求,请执行一些简单的HTTP操作。

+0

如果服务器返回类似于500等的东西,但一旦它真的实现并且实际主机正常脱机,它通常会很好,因为某种原因,它会导致应用程序崩溃:/(尽管事实上存在指定的超时和整个事情围绕着try/catch) – alsandair

+0

@ user530501:当您尝试获取'/ robots.txt'时,它会给您一个500返回代码?苛刻。 – CommonsWare

+0

是啊,其实你给了我这个想法,如果我只是检查如果响应是空的,那么到目前为止工作得很好,干杯:) – alsandair

相关问题