2011-06-19 57 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

相關問題