2012-02-07 45 views
5

Vì vậy, tôi có một phương pháp để kiểm tra nếu thiết bị được kết nối với internet based on this oneAndroid: Kiểm tra kết nối đến máy chủ

Nó hoạt động ok, nhưng trong một vài trường hợp tôi thấy rằng mặc dù các chương trình điện thoại được kết nối với internet, nó vẫn không có quyền truy cập vào máy chủ của tôi. Những gì tôi thực sự muốn làm điều đó kiểm tra kết nối đến URL cụ thể của tôi.

Tôi làm cách nào để triển khai điều đó?

Trả lời

23

Bạn có thể làm một cái gì đó như:

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

này sẽ cố gắng kết nối với URL của máy chủ của bạn và nếu nó không thành công, bạn rõ ràng là không có kết nối. ;-)

+0

phiếu bầu của bạn có thể do bạn chỉ định thời gian chờ là dài, nhưng .setConnectTimeout (mà bạn bỏ lỡ chính tả) chỉ chấp nhận giá trị int. –

+0

Bạn có biết về NetworkOnMainThreadException? .. – levi

+0

@levi, tôi không chắc chắn bạn đang nhận được gì, vì vậy câu trả lời của tôi sẽ không phải là làm điều đó? – AedonEtLIRA

2

Bạn có thể thử

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(); 
      } 
Các vấn đề liên quan