2012-02-07 14 views
5

Così ho un metodo che controlla se il dispositivo è connesso a Internet based on this oneAndroid: Controllare il collegamento al server

Funziona bene, ma in un paio di casi trovo che, anche se gli spettacoli del telefono di essere collegati al Internet, non ha ancora accesso al mio server. Quello che sto davvero cercando di fare è controllare la connessione al mio URL specifico.

Come posso implementarlo?

risposta

23

Si potrebbe fare qualcosa di simile:

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

Questo tenterà di collegarsi alla URL del server e se non riesce, è, ovviamente, non dispone di una connessione. ;-)

+0

il tuo voto negativo potrebbe essere stato perché si specifica un timeout come un lungo, ma. –

+0

Sei a conoscenza di NetworkOnMainThreadException? .. – levi

+0

@levi, non sono sicuro di cosa stai ricevendo, quindi la mia risposta dovrebbe essere non farlo? – AedonEtLIRA

2

Si può provare

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(); 
      } 
Problemi correlati