"isReachable" विधि कई मामलों में मेरे लिए उपयोग करने योग्य नहीं है। यदि आप ऑनलाइन हैं और बाहरी होस्ट (यानी google.com) को हल करने में सक्षम हैं, तो बस परीक्षण के लिए मेरे विकल्प को देखने के लिए नीचे स्क्रॉल कर सकते हैं ... जो आम तौर पर * NIX मशीनों पर काम करता है।
मुद्दा
बकवास की बहुत इस बारे में नहीं है:
भाग 1: समस्या
ध्यान दें कि इस मामले में, यह विफल रहता है की एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण।
//also, this fails for an invalid address, like "www.sjdosgoogle.com1234sd"
InetAddress[] addresses = InetAddress.getAllByName("www.google.com");
for (InetAddress address : addresses) {
if (address.isReachable(10000))
{
System.out.println("Connected "+ address);
}
else
{
System.out.println("Failed "+address);
}
}
//output:*Failed www.google.com/74.125.227.114*
भाग 2: एक hackish वर्कअराउंड
एक विकल्प के रूप में, आप यह कर सकते हैं:
// in case of Linux change the 'n' to 'c'
Process p1 = java.lang.Runtime.getRuntime().exec("ping -n 1 www.google.com");
int returnVal = p1.waitFor();
boolean reachable = (returnVal==0);
पिंग की -c विकल्प पिंग बस करने की कोशिश करने की अनुमति देगा एक बार सर्वर तक पहुंचें (अनंत पिंग के विपरीत जिसे हम टर्मिनल पर उपयोग करने के लिए उपयोग करते हैं)।
यह 0 लौटाएगा यदि मेजबान पहुंच योग्य है। अन्यथा, आपको वापसी मूल्य के रूप में "2" मिलेगा।
बहुत आसान - लेकिन निश्चित रूप से यह मंच विशिष्ट है। और इस आदेश का उपयोग करने के लिए कुछ विशेषाधिकार चेतावनी हो सकती हैं - लेकिन मुझे लगता है कि यह मेरी मशीनों पर काम करता है।
कृपया ध्यान दें कि: 1) यह समाधान उत्पादन गुणवत्ता नहीं है। यह एक हैक का थोड़ा सा है। यदि Google डाउन है, या आपका इंटरनेट अस्थायी रूप से धीमा है, या यहां तक कि यदि आपके विशेषाधिकार/सिस्टम सेटिंग्स में कुछ मज़ेदारता है, तो भी झूठी नकारात्मक वापसी कर सकती है (यानी यह इनपुट विफल होने के बावजूद विफल हो सकता है)। 2) पहुंच योग्य विफलता एक उत्कृष्ट मुद्दा है। दोबारा - कई ऑनलाइन संसाधन बताते हैं कि इस लेखन के समय ऐसा करने का कोई "सही" तरीका नहीं है, जिस तरह से JVM मेजबान तक पहुंचने का प्रयास करता है - मुझे लगता है कि यह एक आंतरिक रूप से प्लेटफ़ॉर्म विशिष्ट कार्य है, हालांकि सरल , अभी तक JVM द्वारा पर्याप्त रूप से सारणित नहीं किया गया है।
संभावित डुप्लिकेट: http://stackoverflow.com/questions/
wping आईपी से पांग के लिए इंतज़ार कर समय आ गया है, तो आप इसे इस पद्धति का उपयोग यू यह लिख सकते हैं के लिए 2000ms
सेट कर सकते हैं 4779367/समस्या-साथ-isreachable-in-inetaddress-class – assylias
यह समान है। लेकिन मुझे समस्या को हल करने के लिए कोई सुराग नहीं मिला। इसलिए मैंने इसे यहां पुन: पेश किया। आपके अनुस्मारक के लिए धन्यवाद! – jiafu
मैं टाइमआउट बढ़ाने की कोशिश करता हूं। – jayunit100