मेरे पास एक साधारण स्क्रिप्ट है जो उस सर्वर से इंटरनेट कनेक्टिविटी होने पर समय-समय पर (प्रत्येक कुछ सेकंड में) सत्यापित करती है। स्पष्ट होने के लिए, यह जांचने वाला नहीं है कि बाहरी साइट/सेवा/सर्वर जिंदा है या नहीं। विश्वसनीय इंटरनेट गंतव्यों के रूप में मैं Google, याहू इत्यादि जैसी साइटों के आईपी का उपयोग करता हूं। आम तौर पर मैं 3 गंतव्यों (लैन, आईएसपी नेटवर्क, आईएसपी के बाहर) का उपयोग करता हूंपर्ल में इंटरनेट कनेक्शन की उपस्थिति की जांच कैसे करें?
इसके लिए ज़िम्मेदार मेरा वर्तमान कोड ping
पर केवल एक साधारण और गंदे कॉल है:
my $pingResponse = `ping -c 1 -w 1 123.123.123.123`;
my $isConnected = parsePingResponse($pingResponse);
ऐसा लगता है, लेकिन मुझे यकीन है कि यह इस कार्य को पूरा करने का सही/सर्वोत्तम तरीका नहीं है। कम से कम 3 दोष हैं: बाहरी सिस्टम कॉल, यह धीमा है, इसकी तुलना में अपेक्षाकृत लंबी की समय सीमा 1 सेकंड है।
तो, मेरे सवाल यह है: कैसे बस आदेश यदि इंटरनेट कनेक्शन जिंदा है सत्यापित करने के लिए लागू करने के लिए और कुशलता से एक पिंग कार्यक्षमता perlish तरीका है?
(मुझे लगता है कि LWP एक overkill है। यह महत्वपूर्ण नहीं है कि कोई साइट या एक पृष्ठ उपलब्ध है, बस अगर कुछ बाहरी आईपी पहुंचा जा सकता है। शायद यह कुछ सरल शामिल निम्न स्तर नेटवर्किंग होना चाहिए)
धन्यवाद, ऐसा लगता है कि मुझे वही चाहिए। टाइमआउट और गंतव्यों एक मुद्दा नहीं हैं। एक और सवाल, यदि आप इससे मदद कर सकते हैं: हर * पिंग * के लिए 'नया' और 'क्लोज' कहा जाना चाहिए? (मेरा मतलब है कि मेरी स्क्रिप्ट लगभग 24/7 चल रही है और खुले कनेक्शन को रखना अच्छा व्यवहार नहीं है और शायद गंतव्य मशीनें थोड़ी देर बाद उन्हें बंद कर देंगी; आईपी अलग हैं, इसलिए मैं * बाढ़ * किसी को भी नहीं करने की कोशिश कर रहा हूं)। – ArtM
मान लीजिए कि आप टीसीपी पिंग्स (डिफ़ॉल्ट) कर रहे हैं, आप स्क्रिप्ट के जीवनकाल के लिए एक ही वस्तु बना सकते हैं और बार-बार 'पिंग' को कॉल कर सकते हैं। यह खुले कनेक्शन नहीं रखेगा। – rjh
पता नहीं क्यों मैं हमेशा झूठी वापसी करता हूं, लेकिन असल में मैं कंसोल/टर्मिनल से पिंग कर सकता हूं। –