क्या जावास्क्रिप्ट से सर्वर को पिंग करना संभव है?


152

मैं एक वेब ऐप बना रहा हूं जिसके लिए जरूरी है कि मैं यह देखूं कि रिमोट सर्वर ऑनलाइन हैं या नहीं। जब मैं इसे कमांड लाइन से चलाता हूं, तो मेरा पेज लोड पूर्ण 60s (8 प्रविष्टियों के लिए, यह रैखिक रूप से अधिक के साथ स्केल करेगा) तक जाता है।

मैंने उपयोगकर्ता के अंत में पिंगिंग का मार्ग तय किया। इस तरह, मैं पेज लोड कर सकता हूं और बस उन्हें अपनी सामग्री ब्राउज़ करते समय "सर्वर ऑनलाइन है" डेटा का इंतजार करना होगा।

यदि किसी के पास उपरोक्त प्रश्न का उत्तर है, या यदि वे मेरे पृष्ठ को तेजी से रखने के लिए कोई समाधान जानते हैं, तो मैं निश्चित रूप से इसकी सराहना करूंगा।

जवाबों:


134

मुझे ऐसा कोई मिला है जो मूल Imageवस्तु के बहुत ही चतुर उपयोग के साथ इसे पूरा करता है ।

उनके स्रोत से, यह मुख्य कार्य है (इसमें स्रोत के अन्य भागों पर निर्भरता है लेकिन आपको विचार मिलता है)।

function Pinger_ping(ip, callback) {

  if(!this.inUse) {

    this.inUse = true;
    this.callback = callback
    this.ip = ip;

    var _that = this;

    this.img = new Image();

    this.img.onload = function() {_that.good();};
    this.img.onerror = function() {_that.good();};

    this.start = new Date().getTime();
    this.img.src = "http://" + ip;
    this.timer = setTimeout(function() { _that.bad();}, 1500);

  }
}

यह उन सभी प्रकार के सर्वरों पर काम करता है जिन्हें मैंने परीक्षण किया है (वेब ​​सर्वर, FTP सर्वर और गेम सर्वर)। यह बंदरगाहों के साथ भी काम करता है। यदि कोई भी उपयोग के मामले का सामना करता है जो विफल रहता है, तो कृपया टिप्पणियों में पोस्ट करें और मैं अपना उत्तर अपडेट करूंगा।

अपडेट : पिछला लिंक हटा दिया गया है। अगर किसी को उपरोक्त जानकारी मिलती है या लागू होती है, तो कृपया टिप्पणी करें और मैं इसे उत्तर में जोड़ दूंगा।

अद्यतन 2 : @trante एक jsFiddle प्रदान करने के लिए काफी अच्छा था।

http://jsfiddle.net/GSSCD/203/

अद्यतन 3 : @ जोनाथन ने कार्यान्वयन के साथ एक GitHub रेपो बनाया।

https://github.com/jdfreder/pingjs

अद्यतन 4 : ऐसा लगता है कि यह कार्यान्वयन अब विश्वसनीय नहीं है। लोग यह भी रिपोर्ट कर रहे हैं कि Chrome अब सभी का समर्थन नहीं करता है, एक net::ERR_NAME_NOT_RESOLVEDत्रुटि फेंक रहा है । यदि कोई वैकल्पिक समाधान सत्यापित कर सकता है तो मैं उसे स्वीकृत उत्तर के रूप में रखूंगा।


48
यह वही है जो मैं उपयोग कर रहा हूं। हालांकि, इसका एक दोष है, और वह यह है कि "छवि" कैश की गई है। जब मैं शुरू में एक दिए गए आईपी को पिंग करता हूं, तो मुझे 304 एमएस मिलता है - लेकिन अगर मैं इसे दूसरी बार बिना पेज रीलोड के पिंग करता हूं, तो मुझे इसके बजाय 2 एमएस मिलते हैं। "/?cachebreaker="+new Date().getTime();यदि आवश्यक हो तो img src के अंत में संलग्न करके इससे बचा जा सकता है।
मशाल

2
यह मेरे लिए काम नहीं कर रहा है, पिंग अनुरोध में एक ज्ञात खराब होस्टनाम परिणाम होस्ट नहीं मिल सका ...। लेकिन जब से ऑनरोर 'अच्छा' है, इस बात का कहना है कि उसने जवाब दिया
मास्लो

5
अधिक परीक्षण से पता चला कि यह पूरी तरह से अविश्वसनीय है।
सिंह

2
@Jonathon द्वारा बनाया गया पिंग एपीआई सफलतापूर्वक सब कुछ पिंग कर देगा। साइटें जो मौजूद नहीं हैं और यादृच्छिक वर्ण हैं।
IE5Master

2
पिंग एपीआई वास्तव में onerror के साथ हमेशा विफल रहता है। यदि लक्ष्य URL किसी छवि को प्रदर्शित करता है, तो यह ऑनलोड लोड करता है जो कि बहुत बढ़िया है! बाईपास कोर की जाँच करता है।
मार्टिन विसेनी

20

पिंग आईसीएमपी है, लेकिन अगर दूरस्थ सर्वर पर कोई खुला टीसीपी पोर्ट है तो इसे इस तरह हासिल किया जा सकता है:

function ping(host, port, pong) {

  var started = new Date().getTime();

  var http = new XMLHttpRequest();

  http.open("GET", "http://" + host + ":" + port, /*async*/true);
  http.onreadystatechange = function() {
    if (http.readyState == 4) {
      var ended = new Date().getTime();

      var milliseconds = ended - started;

      if (pong != null) {
        pong(milliseconds);
      }
    }
  };
  try {
    http.send(null);
  } catch(exception) {
    // this is expected
  }

}


मुझे यह मुश्किल समाधान पसंद है। नंबर वापस करने के बजाय पोंग के लिए एक फ़ंक्शन प्रदान करना मेरे लिए थोड़ा अजीब है लेकिन काम करने योग्य है।
निक

@armen: आपको पिंग को तीसरे तर्क के रूप में एक फ़ंक्शन प्रदान करना है (), इस तर्क के मान को फ़ंक्शन के भीतर पोंग कहा जाता है।
फिनट्यूड

2
ping("example.com", "77", function(m){ console.log("It took "+m+" miliseconds."); })..... उदाहरण कॉल
jave.web

@ निक: यह अतुल्यकालिक सामान है, इसलिए जिस समय यह विधि वापस आती है, तब onreadystatechangeतक निकाल नहीं दिया जाता है। इसका मतलब है कि जब राज्य बदलता है तो आपको कॉलबैक की आवश्यकता होती है।
विस्मय में

मैं मेजबान के लिए जो भी चुनता हूं, पोंग () कहा जाता है। पिंग ( test.zzzzzzzzz, "77", फंक्शन (m) {कंसोल.लॉग ("इसमें" + m + "मिलिसेकंड लिया गया है।");}) प्रिंट्स "इसमें 67 मिलिसेकंड लगे।" ping ( stackoverflow.com, "80", फ़ंक्शन (m) {कंसोल.लॉग ("इसमें" + m + "मिलिसेकंड लिया गया है।");}) एक CORS- त्रुटि देता है: developer.mozilla.org/en-US/docs/Web। HTTP / CORS / त्रुटियां / ... मैं यह नहीं देखता कि रिमोट कंप्यूटर ऑनलाइन होने पर मैं इस कोड की जांच कैसे कर सकता हूं।
टक्स

18

आप यह कोशिश कर सकते हैं:

डाल ping.html के साथ या किसी भी सामग्री को बिना सर्वर पर जावास्क्रिप्ट पर नीचे के रूप में ही कार्य करें:

<script>
    function ping(){
       $.ajax({
          url: 'ping.html',
          success: function(result){
             alert('reply');
          },     
          error: function(result){
              alert('timeout/error');
          }
       });
    }
</script>

1
जो सर्वर मैं पिंग कर रहा हूं, वे मेरे अपने नहीं हैं, इसलिए मेरे पास वह विकल्प नहीं है। हालांकि धन्यवाद।
चक Callebs

9
@dlchambers कॉर्स के लिए बकाया नहीं है, लेकिन डोमेन poilicy को पार करने के लिए DUE है। CORS सर्वर को मूल निर्दिष्ट करने की अनुमति देता है और इसके लिए उसे ब्राउज़र द्वारा समर्थित होना चाहिए। इसलिए यह एक क्रॉस डोमेन समस्या की तरह है।
रॉय नमिर

कोर के कारण HEAD प्रकार के अनुरोध काम नहीं करेंगे। क्रोमियम 55 के साथ परीक्षण किया गया। नेट के मामले में http कोड 0 के साथ एक ही त्रुटि प्राप्त करना :: उदाहरण के लिए CONNECTION_REFUSED।
मार्टिन विसेनी

यह और अधिक क्रॉस ब्राउज़र है।
गेब्रियल

14

आप सीधे जावास्क्रिप्ट में "पिंग" नहीं कर सकते। कुछ अन्य तरीके हो सकते हैं:

  • अजाक्स
  • IsReachable के साथ एक जावा एप्लेट का उपयोग करना
  • एक सर्वराइड स्क्रिप्ट लिखना जो आपके सर्वराइडस्क्रिप्ट में संवाद करने के लिए AJAX का उपयोग करता है
  • आप फ़्लैश में भी पिंग करने में सक्षम हो सकते हैं (एक्शनस्क्रिप्ट)

1
Java का isReachable काफी अविश्वसनीय है .... लेकिन अच्छी तरह से यह 2018 है और Java Applets वैसे भी पुराने हैं।
dreua

8

आप ब्राउज़र जावास्क्रिप्ट में नियमित रूप से पिंग नहीं कर सकते हैं, लेकिन आप यह पता लगा सकते हैं कि रिमोट सर्वर उदाहरण के लिए रिमोट सर्वर से छवि लोड कर रहा है या नहीं। यदि लोडिंग विफल हो जाती है -> सर्वर डाउन।

तुम भी लोड-घटना का उपयोग करके लोडिंग समय की गणना कर सकते हैं। यहाँ एक उदाहरण है कि ओनलोड घटना का उपयोग कैसे करें।


4
इस बारे में दुर्भाग्यपूर्ण बात यह है कि मैं जिन सर्वरों को पिंग कर रहा हूं वे वेब सर्वर नहीं हैं। वे गेम सर्वर हैं।
चक Callebs

1
फिर आपको सर्वर की तरफ पिंग करना होगा - या आप कुछ हल्के http-server पर विचार कर सकते हैं।
एपली

क्या आप कुल पिंग करने का एक तरीका जानते हैं? यह मेरी मुख्य मंदी है, एक के शुरू होने से पहले खत्म होने के अनुरोध के इंतजार में।
चक Callebs

आपको सर्वर को समवर्ती रूप से पिंग करने की आवश्यकता है। आप इसे चुन सकते हैं, थ्रेड्स या प्रक्रियाओं के साथ। वास्तव में कट्टर समाधान के लिए आप Eventmachine का उपयोग कर सकते हैं।
एपली

1
आप कमांड-लाइन pingकमांड का लाभ उठा सकते हैं । यह औद्योगिक ताकत है। या, विभिन्न प्रकार के दिल की धड़कन की जाँच का उपयोग करके, यदि कोई होस्ट चल रहा है, तो यह देखने के लिए सभी प्रकार के नि: शुल्क / ओपन-सोर्स ऐप हैं।
टिन मैन

7

एक websocket समाधान के साथ पिचिंग ...

function ping(ip, isUp, isDown) {
  var ws = new WebSocket("ws://" + ip);
  ws.onerror = function(e){
    isUp();
    ws = null;
  };
  setTimeout(function() { 
    if(ws != null) {
      ws.close();
      ws = null;
      isDown();
    }
  },2000);
}

इवेंट हैंडलर isUp();में कॉल नहीं होना चाहिए onopen? :)
jave.web

1
यह वेबसोकेट प्रोटोकॉल का उपयोग करता है, लेकिन मानता है कि वास्तव में एक वेबसोकेट सर्वर कनेक्शन के लिए इंतजार नहीं कर रहा है। यह सिर्फ 'किसी भी पुराने आईपी' को पिंग करने के लिए है।
एंटनी वुड्स

लेकिन आप यह कैसे पता लगा सकते हैं कि क्या WebSocket अभी समर्थित नहीं है या वास्तव में कुछ त्रुटि थी? :)
jave.web

अगर आपको लगता है कि आप एक आईपी को पिंग करने के लिए पर्याप्त रूप से बदकिस्मत होंगे जो पोर्ट 80 पर एक वेबसोकेट कनेक्शन को स्वीकार कर सकता है , तो हाँ, आपको उस कॉलबैक में भी जोड़ना चाहिए isUp();। या एक अलग गैर-वेबसोकेट-वाई पोर्ट को जोड़कर इसे कम करें।
एंटनी वुड्स

मैंने इसे वोट किया क्योंकि मैं यहां आया था कि जब मेरे वेबसोकेट सर्वर को रिबूट किया जाता है, तो इसका समाधान ढूंढा जाता है, और इस जवाब ने मुझे दिखाया कि मैं सॉकेट के त्रुटि हैंडलर में सेटटाइमआउट कर सकता हूं और पुन: कनेक्ट करने का प्रयास कर सकता हूं (व्यस्त प्रतीक्षा)। शायद सबसे अच्छा अभ्यास नहीं है, लेकिन मेरे मुद्दे को हल करता है। :)
mynameisnafe

6

अपने अनुरोधों को तेज़ रखने के लिए, पिंग के सर्वर साइड परिणामों को कैश करें और पिंग फ़ाइल या डेटाबेस को हर दो मिनट में अपडेट करें (या फिर सटीक कि आप इसे चाहते हैं)। आप अपने 8 पिंग्स के साथ एक शेल कमांड चलाने के लिए क्रोन का उपयोग कर सकते हैं और आउटपुट को एक फाइल में लिख सकते हैं, वेबसर्वर इस फाइल को आपके विचार में शामिल करेगा।


मुझे लगता है कि यह सटीक परिणाम के लिए सर्वोत्तम संभव तरीका है। हालाँकि, यह अभी भी सर्वर पर कुछ कामों की आवश्यकता है मैं कहूंगा कि यह स्मार्ट तरीका नहीं है।
चेतबाहना

5

यदि आप जो देखने की कोशिश कर रहे हैं वह सर्वर "मौजूद" है, तो आप निम्नलिखित का उपयोग कर सकते हैं:

function isValidURL(url) {
    var encodedURL = encodeURIComponent(url);
    var isValid = false;

    $.ajax({
      url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + encodedURL + "%22&format=json",
      type: "get",
      async: false,
      dataType: "json",
      success: function(data) {
        isValid = data.query.results != null;
      },
      error: function(){
        isValid = false;
      }
    });

    return isValid;
}

यह सही / गलत संकेत लौटाएगा कि सर्वर मौजूद है या नहीं।

यदि आप प्रतिक्रिया समय चाहते हैं, तो एक मामूली संशोधन होगा:

function ping(url) {
    var encodedURL = encodeURIComponent(url);
    var startDate = new Date();
    var endDate = null;
    $.ajax({
      url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + encodedURL + "%22&format=json",
      type: "get",
      async: false,
      dataType: "json",
      success: function(data) {
        if (data.query.results != null) {
            endDate = new Date();
        } else {
            endDate = null;
        }
      },
      error: function(){
        endDate = null;
      }
    });

    if (endDate == null) {
        throw "Not responsive...";
    }

    return endDate.getTime() - startDate.getTime();
}

उपयोग तब तुच्छ है:

var isValid = isValidURL("http://example.com");
alert(isValid ? "Valid URL!!!" : "Damn...");

या:

var responseInMillis = ping("example.com");
alert(responseInMillis);

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
वॉनब्रांड

1
यह एक महान समाधान है, लेकिन दुर्भाग्य से, याहू डोमेन क्वेरी सेवा परिवर्तनशील परिणाम देती है। उदाहरण के लिए यदि आप निम्न URL आज़माते हैं, तो start-download .com startfreedownload .com वे पंजीकृत नहीं के रूप में वापस आते हैं, लेकिन यदि आप उन URL पर जाते हैं, तो वे स्पष्ट रूप से पंजीकृत हैं। किसी भी विचार यहाँ क्या हो रहा है? (मैंने इन उदाहरणों में डोमेन नाम के लिए एक स्थान जोड़ा है, बस Google रस देने से बचने के लिए। मेरे परीक्षण में मैंने उन में एक स्थान नहीं दिया है)
user280109

आप याहू से एक अनुरोध कर रहे हैं! यदि आप अपने मशीन से अनुरोध करते हैं तो एपीआई, पिंग भी समान नहीं होगा। इसका कोई मतलब नहीं है
आंद्रे फिगयेरिडो

यह कारण No 'Access-Control-Allow-Origin' header is present on the requested resource. Originऔर सफलता कॉलबैक कभी नहीं कहा जाता है
vladkras

4

मानक पिंग के साथ समस्या यह है कि वे ICMP हैं, जो बहुत से स्थान सुरक्षा और यातायात कारणों से नहीं चलते हैं । यह विफलता की व्याख्या कर सकता है।

1.9 से पहले के रूबी में एक टीसीपी-आधारित था ping.rb, जो रूबी 1.9+ के साथ चलेगा। आपको बस इसे 1.8.7 इंस्टॉलेशन से कहीं और कॉपी करना है। मैंने अभी पुष्टि की है कि यह मेरे होम राउटर को पिंग करके चलेगा।


4

यहाँ और विशेष रूप से कॉर्स के बारे में कई पागल जवाब हैं -

आप http HEAD अनुरोध कर सकते हैं (जैसे GET लेकिन बिना पेलोड के)। देखHttps://ochronus.com/http-head-request-good-use/

इसे प्रीफ़लाइट चेक की ज़रूरत नहीं है, क्योंकि विनिर्देश के पुराने संस्करण के कारण भ्रम है, देखें कि क्रॉस-उत्पत्ति HEAD अनुरोध को प्रीफ़लाइट चेक की आवश्यकता क्यों होती है?

तो आप ऊपर दिए गए उत्तर का उपयोग कर सकते हैं जो jQuery लाइब्रेरी का उपयोग कर रहा है (यह नहीं कहा) लेकिन साथ

type: 'HEAD'

--->

<script>
    function ping(){
       $.ajax({
          url: 'ping.html',
          type: 'HEAD',
          success: function(result){
             alert('reply');
          },     
          error: function(result){
              alert('timeout/error');
          }
       });
    }
</script>

ऑफ कोर्स आप वेनिला जेएस या डोजो या जो भी उपयोग कर सकते हैं ...


1
हेडिंग अनुरोध भेजना अभी भी विफल रहता है "XMLHttpRequest IP लोड नहीं कर सकता है। कोई 'एक्सेस-कंट्रोल-अलाउंस-ओरिजिन' हेडर अनुरोधित संसाधन पर मौजूद नहीं है। इसलिए मूल 'ip2' को एक्सेस की अनुमति नहीं है।" इसलिए कॉर्स द्वारा अवरुद्ध। आप http स्थिति 0 के साथ सफलता प्राप्त करेंगे, और आप इस तरह नेट से अंतर करने में असमर्थ होंगे :: ERR_CONNECTION_REFUSED उदाहरण के लिए
मार्टिन Vysny

0

मुझे नहीं पता कि आप किस रूबी का संस्करण चला रहे हैं, लेकिन क्या आपने जावास्क्रिप्ट के बजाय माणिक के लिए पिंग लागू करने की कोशिश की है? http://raa.ruby-lang.org/project/net-ping/


हाँ, मैंने कोशिश की है कि वेब सर्वर की परवाह किए बिना पिंग हमेशा झूठे आए। मैंने इसे ping server.comसिंटैक्स का उपयोग करने के लिए बदल दिया ।
चक Callebs

-1
let webSite = 'https://google.com/' 
https.get(webSite, function (res) {
    // If you get here, you have a response.
    // If you want, you can check the status code here to verify that it's `200` or some other `2xx`.
    console.log(webSite + ' ' + res.statusCode)
}).on('error', function(e) {
    // Here, an error occurred.  Check `e` for the error.
    console.log(e.code)
});;

यदि आप इसे नोड के साथ चलाते हैं, तो यह 200 तक सांत्वना देगा, जब तक कि Google नीचे नहीं है।


नहीं, यह नहीं है ... 1) आप की आवश्यकता याद आ रही है, 2) यह 301 वापस आ रहा है स्थायी रूप से: डी
मिखल मिकी Jankovský

-1
const ping = (url, timeout = 6000) => {
  return new Promise((reslove, reject) => {
    const urlRule = new RegExp('(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]');
    if (!urlRule.test(url)) reject('invalid url');
    try {
      fetch(url)
        .then(() => reslove(true))
        .catch(() => reslove(false));
      setTimeout(() => {
        reslove(false);
      }, timeout);
    } catch (e) {
      reject(e);
    }
  });
};

इस तरह का उपयोग करें:

ping('https://stackoverflow.com/')
  .then(res=>console.log(res))
  .catch(e=>console.log(e))

-4

आप फॉलिंग का उपयोग करके javaScript से DOS ping.exe कमांड चला सकते हैं:

function ping(ip)
{
    var input = "";
    var WshShell = new ActiveXObject("WScript.Shell");
    var oExec = WshShell.Exec("c:/windows/system32/ping.exe " + ip);

    while (!oExec.StdOut.AtEndOfStream)
    {
            input += oExec.StdOut.ReadLine() + "<br />";
    }
    return input;
}

क्या यह पूछा गया था, या मैं कुछ याद कर रहा हूं?


4
यह केवल IE पर काम करेगा दुर्भाग्य से और केवल एक विंडोज सर्वर पर। सर्वर साइड स्क्रिप्ट को चलाने के लिए AJAX का उपयोग करने का एक बेहतर विकल्प होगा।
एंड्रयू ग्रोथे

क्या बिल्ली है? सक्रिय एक्स ऑब्जेक्ट्स उपयोगकर्ता की फ़ाइल प्रणाली में (जीई सर्वर पर IE में) निष्पादित कर सकते हैं? मैंने ActiveX के साथ काम नहीं किया था, लेकिन इसकी कल्पना नहीं की ...
Julix

-6

बस प्रतिस्थापित करें

file_get_contents

साथ में

$ip = $_SERVER['xxx.xxx.xxx.xxx'];
exec("ping -n 4 $ip 2>&1", $output, $retval);
if ($retval != 0) { 
  echo "no!"; 
} 
else{ 
  echo "yes!"; 
}

1
आपको नए 'आंशिक' को जोड़ने के बजाय अपने पिछले उत्तर को संपादित करना चाहिए ।
आर्टेमिक्स

-8

यह सब बहुत आसान हो सकता है। यदि आप चाहते हैं कि आपका पेज लोड हो, तो अन्य वेब पेज गतिविधि को ट्रिगर करने के लिए कुछ विदेशी पेज की उपलब्धता या सामग्री की जांच करें, आप इसे केवल जावास्क्रिप्ट और php का उपयोग करके ऐसा कर सकते हैं।

yourpage.php

<?php
if (isset($_GET['urlget'])){
  if ($_GET['urlget']!=''){
    $foreignpage= file_get_contents('http://www.foreignpage.html');
    // you could also use curl for more fancy internet queries or if http wrappers aren't active in your php.ini
    // parse $foreignpage for data that indicates your page should proceed
    echo $foreignpage; // or a portion of it as you parsed
    exit();  // this is very important  otherwise you'll get the contents of your own page returned back to you on each call
  }
}
?>

<html>
  mypage html content
  ...

<script>
var stopmelater= setInterval("getforeignurl('?urlget=doesntmatter')", 2000);

function getforeignurl(url){
  var handle= browserspec();
  handle.open('GET', url, false);
  handle.send();
  var returnedPageContents= handle.responseText;
  // parse page contents for what your looking and trigger javascript events accordingly.
  // use handle.open('GET', url, true) to allow javascript to continue executing. must provide a callback function to accept the page contents with handle.onreadystatechange()
}
function browserspec(){
  if (window.XMLHttpRequest){
    return new XMLHttpRequest();
  }else{
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
}

</script>

इससे हो जाना चाहिए।

ट्रिगर जावास्क्रिप्ट में क्लीयरइंटरवल (स्टॉपमेलर) शामिल होना चाहिए

मुझे बताना अगर ये आप के लिए काम करता है

जैरी


2
जैसा कि मैंने पहले कहा था, ये वेब सर्वर नहीं हैं जो मैं पिंग कर रहा हूं। ये गेम सर्वर हैं। वे HTTP अनुरोधों का जवाब नहीं देंगे। :(
चक कैलेब्स

दोस्त, बस के साथ file_get_contents की जगह
जेरी Wickey

$ ip = $ _SERVER ['127.0.0.1']; निष्पादन ("पिंग-एन 4 $ आईपी 2> और 1", $ आउटपुट, $ रिटेल); अगर ($ प्रतिफल! = 0) {गूंज "नहीं!" } और {प्रतिध्वनि "हाँ!" }
जेरी विकी

4
यह एक PHP सवाल नहीं है। यह एक जावास्क्रिप्ट सवाल है। मैं PHP का उपयोग नहीं करता।
१०:३६ पर चक ११

1
कृपया अपने पोस्ट में हस्ताक्षर या टैगलाइन का उपयोग न करें, या उन्हें हटा दिया जाएगा। देखें पूछे जाने वाले प्रश्न जानकारी के लिए।
आर्टेमिक्स

-13

आप अपने वेब पेज में PHP का उपयोग करने की कोशिश कर सकते हैं ... कुछ इस तरह:

<html><body>
<form method="post" name="pingform" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<h1>Host to ping:</h1>
<input type="text" name="tgt_host" value='<?php echo $_POST['tgt_host']; ?>'><br>
<input type="submit" name="submit" value="Submit" >
</form></body>
</html>
<?php

$tgt_host = $_POST['tgt_host'];
$output = shell_exec('ping -c 10 '. $tgt_host.');

echo "<html><body style=\"background-color:#0080c0\">
<script type=\"text/javascript\" language=\"javascript\">alert(\"Ping Results: " . $output . ".\");</script>
</body></html>";

?>

यह परीक्षण नहीं किया गया है इसलिए इसमें टाइपो आदि हो सकता है ... लेकिन मुझे विश्वास है कि यह काम करेगा। सुधार भी किया जा सकता है ...


5
ओपी के टैग के अनुसार यह वास्तव में रूबी ऑन रेल्स सवाल है, इसलिए PHP का उपयोग करना एक अच्छा समाधान नहीं है।
टिन मैन

1
यहाँ एक तर्क शुरू करने के लिए नहीं, लेकिन इस मंच की मदद करने के लिए बात नहीं है?
क्रिस

5
@ क्रिस यह है, लेकिन आपने ओपी को किस तरह की मदद दी जो पीएचपी कोड की आपूर्ति करके रूबी और जेएस को अपने आवेदन पत्र में उपयोग करता है?
biphobe
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.