2012-02-07 14 views
5

तो मैं एक विधि डिवाइस इंटरनेट से कनेक्ट है, तो जांच होती है कि based on this oneएंड्रॉयड: सर्वर से कनेक्शन की जाँच करें

ठीक काम करता है, लेकिन कुछ मामलों में मुझे लगता है कि हालांकि फोन शो से जुड़े होने लगता है इंटरनेट, अभी भी मेरे सर्वर तक पहुंच नहीं है। मैं वास्तव में ऐसा करने के लिए देख रहा हूं यह मेरे विशिष्ट यूआरएल से कनेक्शन की जांच करें।

मैं इसे कैसे कार्यान्वित कर सकता हूं?

उत्तर

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

आपका डाउन वोट हो सकता है क्योंकि आप लंबे समय तक टाइमआउट निर्दिष्ट करते हैं, लेकिन .setConnectTimeout (जिसे आप याद करते हैं) केवल एक int मान स्वीकार करता है। –

+0

क्या आप NetworkOnMainThreadException के बारे में जानते हैं? .. – levi

+0

@levi, मुझे यकीन नहीं है कि आप क्या प्राप्त कर रहे हैं, तो मेरा जवाब यह नहीं करना होगा? – AedonEtLIRA

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