2016-08-17 22 views
7

我正在研究一個需要測試android和移動網絡某些功能的項目。其中 一個是檢查互聯網連接的可靠性做,我應該首先檢查網絡連接本身,然後檢查可靠性如何實施檢查互聯網連接可靠性的測試

是否有任何算法或庫找出可靠性Internet連接的

+0

我認爲這存在的問題可以部分回答您的問題http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-times-out – Bhavesh

+0

你的可靠性是什麼意思?我想你可以使用基本的套接字連接定期檢查互聯網連接。 – Bhavesh

+0

感謝sir 但正如我剛纔所說我測試互聯網連接,但然後我需要測試互聯網連接的可靠性像:是連接可靠與否。 – Martin

回答

0

也許你可以發送一個請求到一個已知的網站來檢查互聯網連接是否足夠穩定,以便在給定時間內得到響應。

public boolean checkInternet(){ 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     if (netInfo != null && netInfo.isConnected()) 
       try { 
         URL url = new URL("http://www.google.com"); 
         HttpURLConnection urlc = (HttpURLConnection) url 
               .openConnection(); 
         urlc.setConnectTimeout(3000); 
         urlc.connect(); 
         if (urlc.getResponseCode() == 200) { 
           // Means response is available within 3 seconds 
           // So, return true or do something else. 
           return true; 
         } 
       } catch (MalformedURLException e1) { 
         // TODO Auto-generated catch block 
         e1.printStackTrace(); 
       } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
       } 
     return false; 
} 
+0

如果我把時間設置爲5000,它會在5秒內再次檢查連接,或者我需要爲此創建一個循環? – Martin

+0

無論何時需要檢查網絡強度時,您都需要調用此方法。如果您需要使用不同的超時調用方法,則可以始終將超時作爲方法參數傳遞。 – fluffyBatman