Comment faire un ping sur les adresses IP à l'aide de JavaScript
Je veux exécuter un code JavaScript de ping 4 adresses IP différentes, et ensuite récupérer la perte de paquets et la latence de ces requêtes ping et de les afficher sur la page.
Comment puis-je faire cela?
Liées à la cette question.
stackoverflow.com/questions/4282151/... Devriez vérifier la solution ci-dessus. Assez lisse.
stackoverflow.com/questions/4282151/... Devriez vérifier la solution ci-dessus. Assez lisse.
OriginalL'auteur user434885 | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le faire à partir de JS. Ce que vous pourriez faire est ceci:
Faire une requête AJAX à votre serveur, qui sera ensuite ping sur les serveurs cibles pour vous, et de retourner le résultat dans de l'AJAX résultat.
Possible avertissements:
OriginalL'auteur Piskvor
La seule méthode à laquelle je pense est le chargement, par exemple un fichier image à partir du serveur externe. Lorsque que le chargement échoue, vous "savez" le serveur ne répond pas (en fait vous ne savez pas, parce que le serveur pourrait être simplement le blocage de vous).
Prendre un coup d'oeil à cet exemple de code pour voir ce que je veux dire:
src
; et si est dans le cache, ce sera le retour de "Ping", si la cible est en place ou pas. en.wikipedia.org/wiki/PingDétendez-vous Piskvor - vous êtes parfaitement correct de dire que ce n'est pas un VRAI ping (ni votre solution) - vous devez être en mesure d'ouvrir des sockets et envoyer arbitraire des paquets TCP/IP pour simuler une table de ping - je viens d'appeler la méthode ping pour des raisons de simplicité. Vous êtes aussi correcte que si la cible n'est pas un serveur HTTP, il va prendre beaucoup de temps - c'est pourquoi j'ai écrit "URL de l'image"... Également la mise en cache est un problème. C'était un simple démonstration d'une approche que l'on pourrait, dans le même principe que l'historique CSS hacks. Merci pour le downvote.
Ne prenez pas le downvote personnellement, je n'ai pas downvote vous; j'ai juste senti qu'il n'a pas vraiment répondre à la question - bien que est un moyen simple de vérifier si un connu du serveur HTTP peut être à la hausse, il n'a pas vraiment de réponse au ping de perte ou de latence. Je suis d'accord que mon approche n'est pas une requête ping à partir de l'ordinateur du client, qui exige une forte de baisse des autorisations et de nombreux trous de sécurité (et ActiveX).
Ne le prend pas personnellement 🙂 Merci pour le suivi
Attention: au-dessus de La cache. Veillez à ajouter quelque chose d'unique à la fin de l'URL. Aussi, un seul IP/Domaine fonctionnera tout aussi bien pour l'image
src
:"http://" + ipOrHost + "?pingedat=" + new Date().getTime();
.OriginalL'auteur Dennis G
J'ai été inspiré par le dernier commentaire, j'ai donc écrit ce court morceau de code.
C'est une sorte de "HTTP ping" qui je pense peut être très utile pour l'utilisation avec des appels XMLHttpRequest(), par exemple pour déterminer lequel est le plus rapide du serveur à utiliser dans certains cas ou pour recueillir des statistiques brutes de l'utilisateur vitesse de connexion internet.
Cette petite fonction est simplement la connexion à un serveur HTTP sur un non-existant URL (qui est prévue pour retourner une erreur 404), puis de mesurer le temps jusqu'à ce que le serveur répond à la requête HTTP, et est en train de faire une moyenne sur le temps cumulé et le nombre d'itérations.
L'URL demandée est modifié randomely à chaque appel depuis j'ai remarqué que (probablement) certains transparent proxy ou de mécanismes de mise en cache où truquer les résultats, dans certains cas, donner des réponses rapides (plus rapide que le protocole ICMP qui fait un peu bizarre).
Méfiez-vous d'utiliser des noms de domaine Complets qui répondent à une véritable serveur HTTP!
Les résultats seront affichés à un corps d'élément avec l'id "résultat", par exemple:
Code de la fonction:
Par exemple, le lancement avec:
Remarque que je ne pouvais pas trouver un simple corelation entre le résultat les chiffres de ce script et le ping ICMP sur les mêmes serveurs, bien que le temps de réponse HTTP semble être à peu près exponentielle de réponse ICMP temps. Ceci peut être expliqué par la quantité de données transférées par le biais de la requête HTTP qui peut varier en fonction sur le serveur web de la saveur et de la configuration, bien entendu, la vitesse du serveur lui-même, et probablement d'autres raisons.
Ce n'est pas très bon code, mais j'ai pensé qu'il pouvait l'aider et, éventuellement, d'en inspirer d'autres.
OriginalL'auteur Gwen Wing
Ci-dessus, les pings l'Url donnée.
Généralement utilisé pour les comptoirs /analytics.
Il ne rencontre pas de réponses d'échec pour le client(javascript)
Il s'agira de vérifier si un serveur répond à une demande, comme une requête http. Un ping est une chose complètement différente.
OriginalL'auteur Dinesh
Le plus proche que vous allez obtenir à un ping de JS est l'utilisation d'AJAX, et la récupération de la readystates, le statut, et les en-têtes. Quelque chose comme ceci:
Bien sûr, vous pouvez aussi mettre des conditions pour les différentes http statuts, et de faire de l'affichage de sortie où vous le souhaitez avec des descriptions etc, pour le rendre plus agréable. Plus d'une url http statut de vérificateur de ping, mais la même idée, vraiment. Vous pouvez toujours en boucle plusieurs fois pour lui faire sentir plus comme un ping pour vous aussi 🙂
OriginalL'auteur Securis
Est-il possible de faire un ping d'un serveur à partir de Javascript?
Devriez vérifier la solution ci-dessus. Assez lisse.
Pas la mienne, évidemment, mais je voulais que ce soit clair.
OriginalL'auteur Jeffrey Tackett
Vous ne pouvez pas PING avec Javascript. J'ai créé Java servlet qui renvoie une 10x10 pixels vert de l'image si elle est vivante et un rouge à l'image de la mort. https://github.com/pla1/Misc/blob/master/README.md
OriginalL'auteur PLA