2012-03-27 15 views
6

यदि पोर्ट को फ़ायरवॉल या राउटर द्वारा अक्षम किया गया है तो जावास्क्रिप्ट (ब्राउज़र में) में पता लगाना संभव है?क्लाइंट-साइड जावास्क्रिप्ट में पोर्ट उपलब्धता की जांच कैसे करें?

+2

किस तरह का जावास्क्रिप्ट? ब्राउज़र में? सर्वर पर? किस तरह का बंदरगाह? सुनने या जोड़ने के लिए? स्थानीय या दूरस्थ? – Thilo

+1

मैं इसे एक ब्राउज़र में पहचानना चाहता हूं। उदाहरण के लिए पोर्ट 843. –

+0

मेरे पास एक फ्लैश पॉलिसी सर्वर है, लेकिन अगर पोर्ट 843 उपलब्ध नहीं है, तो मैं फ्लैश ऐपलेट लोड नहीं करना चाहता हूं। –

उत्तर

4

आप केवल देख सकते हैं कि अपेक्षित प्रतिक्रिया है या नहीं।

जावास्क्रिप्ट का उपयोग करते समय किसी को HTTP की सीमाओं में रहना होगा।

बेशक आप सर्वर के किसी भी बंदरगाह पर एक अजाक्स अनुरोध भेज सकते हैं और देख सकते हैं कि आपको कोई त्रुटि है या नहीं। यदि आप वर्तमान मशीन के लिए पोर्ट की जांच करना चाहते हैं तो शायद "लोकलहोस्ट: 843" पर एक अनुरोध भेजना मदद कर सकता है।

लेकिन त्रुटि कुछ अन्य कारणों से हो सकती है और आवश्यक रूप से फ़ायरवॉल समस्या नहीं हो सकती है।

हमें आपकी सहायता करने के लिए अधिक जानकारी चाहिए।

+0

मेरे पास एक फ्लैश पॉलिसी सर्वर है, लेकिन अगर पोर्ट 843 उपलब्ध नहीं है, तो मैं फ्लैश ऐपलेट लोड नहीं करना चाहता हूं। –

4

नहीं, शुद्ध जावास्क्रिप्ट के साथ यह संभव नहीं है (विशिष्ट बंदरगाहों के लिए http अनुरोध करने के अलावा, लेकिन उन परिणामों का मतलब थोड़ा कम है), आप क्या कर सकते हैं हालांकि बाहर से (दूसरे शब्दों में आपके सर्वर) की जांच है या नहीं विशिष्ट बंदरगाह खुला है। एक अन्य विकल्प जावा ऐपलेट या ब्राउज़र प्लगइन का उपयोग करना होगा जो आपके लिए यह कर सकता है यदि आप वास्तव में की आवश्यकता है, तो इस मामले में ऐसे कई ओपन सोर्स टूल्स हैं जिन्हें आप शायद पोर्ट कर सकते हैं यदि आपके पास उनके साथ आवश्यक अनुभव है। ध्यान दें कि यह बिल्कुल उपयोगकर्ता के अनुकूल नहीं है। (किसी भी तरह से, यह उपयोगी होगा यदि आप सटीक परिदृश्य का वर्णन करेंगे जहां आपको इसकी आवश्यकता है, क्योंकि एक पूरी तरह से अलग समाधान हो सकता है।)

+0

मेरे पास एक फ्लैश पॉलिसी सर्वर है, लेकिन अगर पोर्ट 843 उपलब्ध नहीं है, तो मैं फ्लैश ऐपलेट लोड नहीं करना चाहता हूं। –

+0

उस स्थिति में मैं आपको फ्लैश ऐपलेट लोड करने की सलाह दूंगा, और यदि यह काम नहीं कर सकता है और उपयोगकर्ता को फीडबैक प्रदान करता है तो इस पृष्ठ पर कॉलबैक करें (इस मामले में यह जावास्क्रिप्ट के बजाए फ्लैश कार्यक्षमता के बारे में है जहां यह नहीं है ' टी संभव है) (और मुझे नहीं पता कि फ्लैश में क्या है और संभव नहीं है।)। –

3

यदि आप jQuery का उपयोग करने के लिए पर्याप्त लचीले हैं, तो यह Answer by me देखें। यह न केवल बंदरगाह की उपलब्धता की जांच करेगा, बल्कि यह भी कि रिमोट से सफलता प्रतिक्रिया कोड 200 आ रहा है (या कोई भी, मेरा मतलब है कि यह क्रॉस-डोमेन भी समर्थन करता है) सर्वर। यहां समाधान भी दे रहा है। मैं यहां पोर्ट 843 के लिए जांच करूँगा।

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
     <script type="text/javascript" src="jquery-1.7.2-min.js"></script> 
    </head> 
    <body> 
     <script type"text/javascript"> 
      var isAccessible = null; 
      function checkConnection() { 
    /*make sure you host a helloWorld HTML page in the following URL, so that requests are succeeded with 200 status code*/ 
       var url = "http://yourserverIP:843/test/hello.html" ; 
       $.ajax({ 
        url: url, 
        type: "get", 
        cache: false, 
        dataType: 'jsonp', // it is for supporting crossdomain 
        crossDomain : true, 
        asynchronous : false, 
        jsonpCallback: 'deadCode', 
        timeout : 1500, // set a timeout in milliseconds 
        complete : function(xhr, responseText, thrownError) { 
         if(xhr.status == "200") { 
          isAccessible = true; 
          success(); // yes response came, execute success() 
         } 
         else { 
          isAccessible = false; 
          failure(); // this will be executed after the request gets timed out due to blockage of ports/connections/IPs 
         } 
        } 
       }); 
      } 
      $(document).ready(function() { 
       checkConnection(); // here I invoke the checking function 
      }); 
     </script> 
    </body> 
</html> 
+0

इसने मुझे यह देखने के लिए प्रेरित किया कि क्या यह विधि किसी समस्या पर लागू होगी, जहां हम एक बंदरगाह पिंग करने का प्रयास कर रहे थे, जिसमें दूसरी तरफ श्रोता नहीं हो सकता था। समस्या यह थी कि जब कोई श्रोता नहीं होता था तब क्रोम हमेशा एक त्रुटि को लॉग करता था जब भी कोशिश/पकड़ में xhr अनुरोध लपेटता था .. एक हत्यारा नहीं बल्कि अभी भी बदसूरत है। सफलता और त्रुटि ब्लॉक को हटाकर और पूरे ब्लॉक में प्रतिक्रिया को संभालने के द्वारा, जैसा कि आपने यहां किया था, हमने कंसोल संदेश से परहेज किया! मैं अभी भी एसिंक कॉल के साथ ऐसा करने में सक्षम था। कोड के लिए धन्यवाद। – likestoski

संबंधित मुद्दे