Wie IP-Adressen mit JavaScript pingen

7

Ich möchte einen JavaScript-Code ausführen, um 4 verschiedene IP-Adressen zu pingen und dann den Paketverlust und die Latenz dieser Ping-Anfragen abzurufen und sie auf der Seite anzuzeigen.

Wie mache ich das?

    
user434885 10.02.2011, 08:14
quelle

7 Antworten

16

Sie können dies nicht von JS aus tun. Was Sie tun könnten, ist dies:

%Vor%

Machen Sie eine AJAX-Anfrage an Ihren Server, der dann die Zielserver anpingt und das Ergebnis im AJAX-Ergebnis zurückgibt.

Mögliche Vorbehalte:

  • Hier erfahren Sie, ob die Zielserver von Ihrem Server und nicht vom Client des Benutzers aus über eine Ping-Funktion verfügen
    • damit der Client Hosts nicht sein LAN
    • testen kann
    • Aber Sie sollten nicht zulassen, dass der Host Hosts im internen Netzwerk des Servers überprüft, falls vorhanden
    • Einige Hosts blockieren den Datenverkehr von bestimmten Hosts und nicht von anderen
  • Sie müssen die Anzahl der Pings pro Computer begrenzen:
    • um zu vermeiden, dass die AJAX-Anfrage abläuft
    • Einige Website-Betreiber können sehr verärgert sein, wenn Sie ständig ihre Sites anpingen
  • Ressourcen
    • lang laufende HTTP-Anfragen können bis zum maximalen Verbindungslimit Ihres Servers laufen, prüfen Sie, wie hoch
    • ist
    • viele Benutzer, die versuchen, einmal zu pingen, könnten verdächtig aussehenden Datenverkehr erzeugen (alles ICMP und nichts anderes)
  • Nebenläufigkeit - Sie möchten den up / down-Status möglicherweise für einige Sekunden puffern / zwischenspeichern, sodass mehrere Clients, die dasselbe Ziel anpingen möchten, keine Flut von Pings auslösen
Piskvor 10.02.2011, 08:21
quelle
4

Die einzige Methode, an die ich denken kann, ist das Laden von z. eine Image-Datei vom externen Server. Wenn dieser Ladevorgang fehlschlägt, "wissen" Sie, dass der Server nicht reagiert (Sie wissen es tatsächlich nicht, weil der Server Sie gerade blockieren könnte).

Sehen Sie sich diesen Beispielcode an, um zu sehen, was ich meine:

%Vor%     
Dennis G 10.02.2011 08:30
quelle
2

Am nächsten kommst du in JS zu einem Ping, indem du AJAX verwendest und die Ready-Status, den Status und die Header abrufst. Etwas wie das:

%Vor%

Natürlich können Sie auch Bedingungen für verschiedene HTTP-Status eingeben und die Ausgabe so gestalten, wie Sie wollen, mit Beschreibungen usw., damit sie schöner aussieht. Mehr von einem http URL Status Checker als ein Ping, aber die gleiche Idee wirklich. Sie können es immer ein paar Mal wiederholen, damit es sich für Sie auch wie ein Ping anfühlt:)

    
Securis 24.06.2014 04:54
quelle
2

Ich wurde von dem letzten Kommentar inspiriert, also schrieb ich diesen schnellen Code.

Dies ist eine Art von „HTTP ping“, die ich denken kann sehr nützlich sein, mit XMLHttpRequest Anrufen zu verwenden, entlang (), zum Beispiel, um herauszufinden, was der schnellste Server ist in einigen Fällen zu verwenden, oder einige groben Statistiken zu sammeln die Internetverbindungsgeschwindigkeit des Benutzers.

Diese kleine Funktion stellt nur eine Verbindung zu einem HTTP-Server auf einer nicht vorhandenen URL her (die 404 zurückgeben soll), misst dann die Zeit, bis der Server die HTTP-Anfrage beantwortet, und führt einen Durchschnitt ein die kumulierte Zeit und die Anzahl der Iterationen.

Die angeforderte URL modifiziert Als Crossover bei jedem Aufruf, da ich bemerkt habe, dass (wahrscheinlich) einige transparenten Proxies oder Caching-Mechanismen, wo fälschen Ergebnisse in einigen Fällen geben zusätzlichen schnelle Antworten (schneller als ICMP eigentlich die etwas komisch).

Achten Sie darauf, FQDNs zu verwenden, die zu einem echten HTTP-Server passen! Die Ergebnisse werden einem Körperelement mit der ID "result" angezeigt, zum Beispiel:

%Vor%

Funktionscode:

%Vor%

Starten Sie zum Beispiel mit:

%Vor%

Beachten Sie, dass ich keine einfache Korrelation zwischen den Ergebniszahlen dieses Skripts und dem ICMP-Ping auf den entsprechenden Servern finden konnte, obwohl die HTTP-Antwortzeit aus der ICMP-Antwortzeit grob exponentiell zu sein scheint. Dies kann durch die Menge an Daten erklärt werden, die über die HTTP-Anfrage übertragen werden, die je nach Geschmack und Konfiguration des Webservers variieren kann, offensichtlich die Geschwindigkeit des Servers selbst und wahrscheinlich andere Gründe.

Das ist kein sehr guter Code, aber ich dachte, es könnte helfen und möglicherweise andere inspirieren.

    
Gwen Wing 20.02.2015 17:03
quelle
1
%Vor%

Oben pingt die angegebene URL.
Wird im Allgemeinen für Counter / Analytics verwendet. Es wird keine fehlgeschlagenen Antworten auf den Client (Javascript) finden

    
Dinesh 12.06.2013 06:57
quelle
-1

Ist es möglich, einen Server von Javascript zu pingen?

Sollte die obige Lösung überprüfen. Ziemlich glatt.

Natürlich nicht von mir, aber ich wollte das klarstellen.

    
Jeffrey Tackett 16.04.2017 21:51
quelle
-2

Sie können nicht mit Javascript PINGEN. Ich habe ein Java-Servlet erstellt, das ein 10 x 10 Pixel großes grünes Bild zurückgibt, wenn es lebendig ist, und ein rotes Bild, wenn es tot ist. Ссылка

    
PLA 18.01.2016 15:40
quelle

Tags und Links