संभव डुप्लिकेट का उपयोग कर इंटरनेट कनेक्शन का पता लगाने:
How to check if internet connection is present in java?जावा
मैं अगर किसी को भी अगर वहाँ एक इंटरनेट कनेक्शन है जब जावा का उपयोग कर पता लगाने के लिए एक आसान तरीका है देखना चाहता हूँ। वर्तमान ऐप ने विंडोज़ के लिए WinInit DLL में "InternetGetConnectedState" विधि का उपयोग किया, लेकिन मेरे ऐप को मैक ऑपरेशन के लिए क्रॉस-प्लेटफॉर्म होने की आवश्यकता है और इस तरह काम नहीं करेगा। मैं जावा में डीएलएल का उपयोग करने के लिए जेएनआई को बिल्कुल नहीं जानता और यह तेजी से निराशाजनक हो गया।
केवल एक ही तरीके से मैं सोच सकता था कि वेबसाइट पर यूआरएल कनेक्शन खोलने की कोशिश कर रहा था और यदि यह विफल हो जाता है, तो झूठी वापसी करें। मेरा दूसरा तरीका नीचे है, लेकिन मुझे नहीं पता था कि यह आम तौर पर स्थिर था या नहीं। अगर मैं अपने नेटवर्क केबल को अनप्लग करता हूं तो मुझे InetAddress बनाने का प्रयास करते समय अज्ञातहोस्ट अपवाद प्राप्त होता है। अन्यथा यदि केबल कनेक्ट है तो मुझे एक वैध InetAddress ऑब्जेक्ट मिलता है। मैंने अभी तक मैक पर नीचे दिए गए कोड का परीक्षण नहीं किया है।
आपके द्वारा प्रदान किए जा सकने वाले किसी भी उदाहरण या सलाह के लिए धन्यवाद।
अद्यतन: अंतिम कोड ब्लॉक नीचे है। मैंने एक HTTP अनुरोध (इस मामले में Google) की सलाह लेने का फैसला किया। यह आसान है और डेटा को वापस लौटने के लिए साइट पर एक अनुरोध भेजता है। अगर मुझे कनेक्शन से कोई सामग्री नहीं मिल रही है, तो कोई इंटरनेट नहीं है।
public static boolean isInternetReachable()
{
try {
InetAddress address = InetAddress.getByName("java.sun.com");
if(address == null)
{
return false;
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
अंतिम कोड ब्लॉक:
//checks for connection to the internet through dummy request
public static boolean isInternetReachable()
{
try {
//make a URL to a known source
URL url = new URL("http://www.google.com");
//open a connection to that source
HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();
//trying to retrieve data from the source. If there
//is no connection, this line will fail
Object objData = urlConnect.getContent();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
टिप्पणी के लिए धन्यवाद। प्रतिक्रिया और विभिन्न विचारों को प्राप्त करना हमेशा अच्छा होता है। मुझे यूआरएल कनेक्शन का विचार था, या उस मामले के लिए HttpURLConnection का उपयोग करना था। मुझे पता नहीं था कि यह केवल डीएनएस परीक्षण किया गया है लेकिन मुझे इस विधि के साथ रहना पड़ सकता है। –
ऊपर अंतिम कोड ब्लॉक देखें और नोट अपडेट करें। –