Y at-il un moyen de faire un ping sur une adresse IP spécifique avec C? Si je voulais pinguer "www.google.com" avec un certain nombre de pings, ou d'ailleurs, une adresse locale, j'aurais besoin d'un programme pour le faire. Comment puis-je ping à partir de C?Y at-il un moyen de faire un ping sur une adresse IP spécifique avec C?
Répondre
Vous devrez apprendre les sockets, résoudre l'hôte que vous voulez exécuter, envoyer les paquets ICMP appropriés et écouter une réponse. Il n'y a pas de fonction ping
dans la bibliothèque standard. Cependant, il existe de nombreuses bibliothèques réseau de niveau supérieur qui implémentent déjà le protocole.
Ceci est juste le plus simple que j'ai trouvé.
http://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/commands/simple/ping.c
Comment trouver les fichiers net/gen? Ils semblent être indisponibles quand j'essaie de compiler! –
Vous pouvez concevoir votre propre ICMP packets en utilisant raw sockets, mais est loin d'être trivial. Le source code for ping(1)
est un bon point de départ pour déterminer comment procéder (il utilise une licence de type BSD, voir le code source de la licence complète). Gardez à l'esprit que les sockets raw nécessitent des privilèges root sous Linux, donc votre programme devra être setuid root.
Bien sûr, il est beaucoup plus facile de débourser vers l'exécutable ping(1)
et de ne pas avoir à faire face à tout cela vous-même. Vous n'aurez pas à vous inquiéter des licences de code, et votre programme n'aura pas besoin de privilèges root (en supposant qu'il n'en a pas besoin pour autre chose). system(3)
, popen(3)
, et fork(3)
/exec(3)
sont vos amis.
Je souhaite que vous ayez donné une meilleure explication de la méthode système/exécution. Cela aurait été extrêmement utile. – CaptainBli
Il n'y a pas de réponse acceptée et je suis tombé sur cette question en essayant de faire exactement ce qui a été demandé ici, donc je voulais me référer à Aif's répondre here.
Le code suivant est basé sur son exemple et envoie un ping au DNS public de Google dans un processus fils et imprime la sortie dans le processus parent.
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#define BUFLEN 1024
int main(int argc, char **argv)
{
int pipe_arr[2];
char buf[BUFLEN];
//Create pipe - pipe_arr[0] is "reading end", pipe_arr[1] is "writing end"
pipe(pipe_arr);
if(fork() == 0) //child
{
dup2(pipe_arr[1], STDOUT_FILENO);
execl("/sbin/ping", "ping", "-c 1", "8.8.8.8", (char*)NULL);
}
else //parent
{
wait(NULL);
read(pipe_arr[0], buf, BUFLEN);
printf("%s\n", buf);
}
close(pipe_arr[0]);
close(pipe_arr[1]);
return 0;
}
- 1. php ping une adresse IP de gamme
- 2. Shorewall: Comment activer le ping à une adresse IP spécifique où la zone contenant cette adresse IP a ping désactivé
- 3. PHP si exécuter un script sur une adresse IP spécifique
- 4. C ouvrir le socket sur une adresse IP spécifique
- 5. Impossible de faire un ping sur les adresses IP whm
- 6. TcpListener: écouter sur chaque adresse, y compris GPRS adresse IP
- 7. Comment écouter une adresse IP spécifique
- 8. Faire un "ping" à l'intérieur de mon application C#
- 9. Ping une adresse IP en utilisant php et entraîner seulement le temps de réponse moyen.
- 10. Connexion à une adresse IP spécifique dans C?
- 11. Liaison à une adresse IP spécifique en C pour ubuntu
- 12. Comment faire un ping des adresses IP en utilisant JavaScript
- 13. Comment faire apparaître mon adresse IP avec un préfixe spécifique (lors de la connexion à un serveur ssh)?
- 14. plus 100 avec la dernière adresse ip
- 15. Comment envoyer une requête en utilisant une adresse IP spécifique à un site Web avec PowerShell
- 16. Envoi d'un ping à chaque adresse IP sur un sous-réseau
- 17. Existe-t-il un moyen de joindre la requête Ruby Net :: HTTP à une adresse IP/une interface réseau spécifique?
- 18. Existe-t-il un moyen d'associer une adresse IP élastique avec une instance EC2 au démarrage?
- 19. Puis-je essayer de faire un ping sur un site web via un adaptateur spécifique?
- 20. Référentiel Git sur une machine avec une adresse IP statique
- 21. Comment faire un ping sur une ip et obtenir seulement les ms dans le Tk avec Python?
- 22. Authentification de contournement de siteminder pour une adresse IP spécifique
- 23. Pouvez-vous faire une commande Ping ou traceroute sur iPhone?
- 24. Comment utiliser PHP et curl pour faire un ping de la même manière que Windows ping
- 25. Comment changer une adresse IP en C++?
- 26. Comment déterminer si une adresse IP appartient à un pays
- 27. HttpWebRequest - Récupère une page d'url et une adresse IP spécifique
- 28. C# 2.0 - Y a-t-il un moyen de faire un `GroupBy` avec un bloc d'itération?
- 29. Configuration de DNS pour résoudre un sous-domaine en une adresse IP spécifique
- 30. Comment faire un ping sur un serveur en utilisant différentes adresses ip dans php
Utilisez l'API 'socket' (' man socket'). –
Pourquoi voudriez-vous faire un ping sur Google, en supposant que vous ne travailliez pas pour Google? – dbasnett
Il est spécifique au système d'exploitation. Et 'www.google.com' n'est pas une adresse IP (mais' 192.168.2.34' en est une). –