2010-05-05 14 views
5

मैं क्लोजर का उपयोग कर रहा हूं, लेकिन मैं जावा पढ़ सकता हूं, इसलिए यह क्लोजर विशिष्ट प्रश्न नहीं है। यह जावा से भी काम नहीं कर रहा है।जावा में पहुंच योग्य है

मैं isReachable का उपयोग कर एक 'पिंग' फ़ंक्शन को लागू करने की कोशिश कर रहा हूं। कोड मैं उपयोग कर रहा हूँ यह है:

(.isReachable (java.net.InetAddress/getByName "www.microsoft.com") 5000) 

मेरा एक अच्छा दोस्त द्वारा जावा इसमें अनूदित:

public class NetTest { 
    public static void main (String[] args) throws Exception{ 
    String host = "acidrayne.net"; 
    InetAddress a = InetAddress.getByName(host); 

    System.out.println(a.isReachable(10000)); 
    } 
} 

इन दोनों अवास्तविक लौटाते। मुझे लगता है कि मुझे यह गलत होना चाहिए, लेकिन Google शोध मुझे अलग-अलग बता रहा है। मैं उलझन में हूँ!

+0

क्या आप जिस मशीन को चला रहे हैं उससे आप एसिड्रेनेनेट को पिंग कर सकते हैं? – Yishai

+0

मैं 'ping -c 1 acidrayne.net' के माध्यम से acidrayne.net को पिंग कर सकता हूं, लेकिन उपरोक्त कोड के माध्यम से नहीं। और वह किसी भी मशीन पर है। – Rayne

उत्तर

3

टिप्पणी करने के लिए है कि यह गलत है जवाब में अपडेट किया गया:

यूनिक्स/लिनक्स का उपयोग करना ??

http://bordet.blogspot.com/2006/07/icmp-and-inetaddressisreachable.html का कहना है:

लिनक्स/यूनिक्स, बजाय, एक ICMP "पिंग" सिस्टम कॉल का समर्थन करता है। तो java.net.InetAddress.isReachable() का कार्यान्वयन पहले "पिंग" सिस्टम कॉल ** करने की कोशिश करता है; यदि यह विफल रहता है, तो यह विंडोज़ में [एसआईसी-टू] पोर्ट 7 पर एक टीसीपी सॉकेट खोलने की कोशिश कर रहा है।

ऐसा लगता है कि लिनक्स/यूनिक्स में पिंग सिस्टम कॉल रूट विशेषाधिकारों, क्योंकि कई जावा कार्यक्रमों जड़ के रूप में चलाने नहीं कर रहे हैं की आवश्यकता है इसलिए कई बार java.net.InetAddress.isReachable के सबसे() असफल हो जायेगी, और क्योंकि लक्ष्य पते की संभावना इको सेवा है और चल रही है। बहुत बुरा।

सही नहीं है यही कारण है कि:

@EJP से नीचे टिप्पणी की गूंज सेवा के बारे में गलत, गलत गलत है हिस्सा इंगित करता है। पहुंचने योग्य रिटर्न सही है अगर यह कनेक्ट 7 एक्सपोजर पोर्ट 7 से कनेक्ट करने का प्रयास कर रहा है, क्योंकि यह साबित करता है कि मेजबान आरएसटी सेगमेंट भेजने और सक्षम करने में सक्षम है।

इस तरह के मामलों में, मैं WireShark, tcpdump (Windows पर WinDump) या स्नूप (Solaris) की तरह एक पैकेट स्निफर का उपयोग पुष्टि करने के लिए क्या वास्तव में तार पर हो रहा है।

+0

यह बहुत भयानक है। – Rayne

+0

@ रेयने - –

+2

सहमत है यह सही नहीं है। पहुंचने योग्य रिटर्न सही है अगर यह कनेक्ट 7 एक्सपोजर पोर्ट 7 से कनेक्ट करने का प्रयास कर रहा है, क्योंकि यह साबित करता है कि मेजबान आरएसटी सेगमेंट भेजने और सक्षम करने में सक्षम है। – EJP

1

सही उत्तर वास्तव में सही नहीं है मुझे लगता है। माइक्रोसॉफ्ट.com बुनियादी पिंग बाढ़ के हमलों से बचने के लिए शायद आईसीएमपी अनुरोधों को अनदेखा करता है। दूसरे होस्ट के लिए मुझे नहीं पता कि पिंग के साथ समस्या क्या हो सकती है, लेकिन मैं जीएनयू/लिनक्स का उपयोग कर रहा हूं और यह सुनिश्चित करने योग्य काम ठीक है।

+0

यह ठीक काम करता है अगर मैं इसे रूट के रूप में चलाता हूं, और एक दोस्त एक ही चीज़ का अनुभव करता है, इसलिए मैं काफी हद तक निश्चित हूं कि उसका जवाब कम से कम उस बिंदु तक सही था। – Rayne

+0

शायद ऐसा ही। मैं विशेषज्ञ नहीं हूं, मैं बस इतना कह रहा हूं कि प्रयोग करने योग्य कोड का उपयोग कर रहा है() लिनक्स के तहत रूट नहीं है, कुछ होस्टों के लिए काम किया है ... –