2012-02-07 153 views
5

所以我有一個檢查,如果設備連接到互聯網的方法based on this one安卓:檢查連接到服務器

它的工作原理確定,但在幾個案例我發現,雖然手機顯示連接到互聯網,它仍然無法訪問我的服務器。我真的想要做的是檢查連接到我的特定URL。

我該怎麼實現?

回答

23

你可以這樣做:

public boolean isConnectedToServer(String url, int timeout) { 
    try{ 
     URL myUrl = new URL(url); 
     URLConnection connection = myUrl.openConnection(); 
     connection.setConnectTimeout(timeout); 
     connection.connect(); 
     return true; 
    } catch (Exception e) { 
     // Handle your exceptions 
     return false; 
    } 
} 

這將嘗試連接到您的服務器的URL,如果失敗,你顯然不具備的連接。 ;-)

+0

您的投票可能是因爲您指定超時爲long,但.setConnectTimeout(您錯過拼寫)只接受一個int值。 – 2012-09-20 18:22:44

+0

你知道NetworkOnMainThreadException嗎?.. – levi 2014-09-17 15:34:22

+0

@levi,我不知道你在做什麼,所以我的答案不得不這樣做嗎? – AedonEtLIRA 2014-09-17 20:32:42

2

您可以嘗試

InetAddress.getByName(host).isReachable(timeOut) 
0
Runtime runtime = Runtime.getRuntime(); 
      Process proc; 
      try { 
       proc = runtime.exec("ping -c 1"+ (String) getText(R.string.Server)); 
       proc.waitFor(); 
       int exit = proc.exitValue(); 
       if (exit == 0) { // normal exit 


       } else { // abnormal exit, so decide that the server is not 
          // reachable 


       } 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } // other servers, for example 
      catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      }