Ping (icmp et raw socket) dev-cpp

Soyez le premier à donner votre avis sur cette source.

Vue 17 317 fois - Téléchargée 2 204 fois

Description

C'est un programme destiné à faire des requetes ICMP, une copie qui se veut la plus proche de la commande 'ping' de MS-DOS.
Les options de base sont implémentées, mais elles doivent etres mises dans l'ordre :
-t pour faire tourner le prog à l'infini
-a pour utiliser la résolution de nom
-n pour spécifier le nombre de requêtes à envoyer
-w pour spécifier le temps d'attente de la réponse

Source / Exemple :


pas de code car tout est dans le zip !!!

Conclusion :


Je comptes l'améliorer en utilisant getopt() pour gérer les options de la ligne de commande.
Je vais aussi rajouter une option qui permet de spécifier la taille des paquets.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
dimanche 20 mars 2011
Statut
Membre
Dernière intervention
30 avril 2011

Slt

j'utilise actuellement le programme pingueur.c pour similer la commande dos ping (protocole ICMP), lorsque l'adresse IP est correcte le programme fonctionne bien, mais si je tape une adresse inexistante ou réseau non fonctionnel, il m'affiche "délai d'attente dépassé".

1) voci la partie du programme affichant ce message :
if (select(sock+1, &fdsr, NULL, NULL, &tv_timeout) <= 0)
{
// Dans le cas où le temps est écoulé, on veut sortir de la boucle
// on compte le paquet comme envoyé mais perdu
printf("D\202lai d'attente de la demande depass\202.\n");

2) En principe il doit afficher les autres cas lorsque le type
est différent de 8

if((icmphdr->type)!=8 && (icmphdr->code)!=0)
{
// En cas d'erreur, identification
switch(icmphdr->type)
{
case 3 :
printf("R\202ponse de %s : %s.\n", inet_ntoa(from- >sin_addr), Erreur3[icmphdr->code]);
envoye++;
return 1;
case 4 :
printf("R\202ponse de %s : %s.\n", inet_ntoa(from->sin_addr), Erreur4[icmphdr->code]);
envoye++;
return 1;
case 5 :
printf("R\202ponse de %s : %s.\n", inet_ntoa(from->sin_addr), Erreur5[icmphdr->code]);
envoye++;
return 1;
case 11 :
printf("R\202ponse de %s : %s.\n", inet_ntoa(from->sin_addr), Erreur11[icmphdr->code]);
envoye++;
return 1;
case 12 :
printf("R\202ponse de %s : %s.\n", inet_ntoa(from->sin_addr), Erreur12[icmphdr->code]);
envoye++;
return 1;


J'attends votre aide avec impatience et MERCI
Messages postés
2
Date d'inscription
dimanche 20 mars 2011
Statut
Membre
Dernière intervention
30 avril 2011

slt
je viens d'exécuter ce pgm et il fonctionne correctement lorsq le ping passe mais lorsq ce dernier ne passe pas je n'aurai pas les messages d'erreurs qui ont été présentés dans le pgm , il m'affiche juste " délai d'attente dépassé " . je ne sais pas ou est le pb ...
veuillez svp me répondre le plutot possible .
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

Petite chose quand même, le champ timestamp n'éxiste pas vraiment, il s'agit du champs data, et c'est d'ailleurs dommage qu'on ne puisse pas choisir le nombre d'octets à envoyer, et j'aurai mis le max_packet à plus que 1024. A part ça ça marche bien :)
Messages postés
2
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
21 juin 2007

Bonjour,
Je trouve ton programme bien fait.
Mais, j'ai une question: Je voulais savoir si c'est possible à partir de plusieurs @IP, d'envoyer plusieurs ping avec ton programme.
Et si oui comment?

J'ai essayé avec une liste d'adresse predefinie dans un fichier mais ca ne marche bien.

Merci d'avance.

AD
Messages postés
2
Date d'inscription
vendredi 13 octobre 2006
Statut
Membre
Dernière intervention
30 octobre 2006

ouaou ia du boulot deriere tous sa !
merci au posteur, meme si je vais jsut commencer a etudier le prog car a premiere vu jne pige rien :d
!!
Afficher les 44 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.