Le but est de créer un programme permettant d’obtenir le résultat de plusieurs commandes ping envoyées vers des adresses IP ou des noms de domaines différents.
Ceci peut-être utile, pour un administrateur réseau, par exemple pour tester d’un seul coup la connectivité de toutes les imprimantes de son réseau local.
Vous ferez ce projet avec l'éditeur VsCode et le compilateur GCC ou TCC.
La fonction "system" (stdlib.h), permet d'exécuter une commande système.
#include <stdio.h>
#include <stdlib.h>
const char EACCENTA = 0x82; // é
int main()
{
// La fonction "system" (stdlib.h), permet d'exécuter une commande système
// par exemple ici : la commande cls qui efface la fenêtre de terminal
system("cls");
// Autre exemple avec la commande ipconfig :
system("ipconfig");
// Envoie d'un ping vers une adresse IP
// Retour vaut 0 si le ping s'est correctement exécuté
printf("\n\nping 8.8.8.8");
int retour = system("ping 8.8.8.8 | findstr /r /c:\"[0-9] *ms\" > NUL"); // > NUL évite que la commande ping affiche quelque chose
printf("\nping 8.8.8.8 a renvoy%c : %d", EACCENTA, retour);
// Envoie d'un ping vers un nom de domaine
printf("\n\nping google.fr");
retour = system("ping google.fr | findstr /r /c:\"[0-9] *ms\" > NUL");
printf("\nping google.fr a renvoy%c : %d", EACCENTA, retour);
// Envoie d'un ping vers un nom de domaine qui n'existe pas
// Retour vaut 1 car le ping ne s'est pas correctement exécuté
printf("\n\nping google.fra");
retour = system("ping google.fra | findstr /r /c:\"[0-9] *ms\" > NUL");
printf("\nping google.fr a renvoy%c : %d", EACCENTA, retour);
// Pour éviter que la fenêtre se ferme à la fin du programme
printf("\n\n");
system("pause");
return 0;
}
Ecrire un programme qui produit l’affichage ci-dessous :
OK indique un serveur qui a répondu au ping
Un X indique un serveur qui n’a pas répondu au ping
char tabVillesDeFrance [5][20] = {
"Lyon",
"Paris",
"Marseille",
"Bordeaux",
"Lille"
};
Vous aurez besoin de la fonction « strcat » qui permet de concaténer 2 chaines de caractères :
https://cplusplus.com/reference/cstring/strcat/
Faire constater au professeurOn désire mettre un peu de couleur (voir exemple).
Voici une capture d’écran du résultat attendu :
Vous devez créer une fonction dont le prototype sera :
void execPing(HANDLE hConsole, char* ip);
ou
void execPing(HANDLE hConsole, char ip[]);
Cette fonction enverra un "ping" vers l’ip passée en paramètre, et, en fonction du résultat de la commande "ping", affichera l’ip suivi de " : OK" ou " : X".
#include <stdio.h>
#include <stdlib.h>
#include <windows.h> // Pour GetStdHandle et SetConsoleTextAttribute
// Définition des couleurs sous formes de constantes
#define NOIR 0x00
#define GRIS_CLAIR 0x07
#define GRIS_FONCE 0x08
#define BLEU 0x09
#define VERT 0x0A
#define ROUGE 0x0C
#define ROSE 0x0D
#define JAUNE 0x0E
#define BLANC 0x0F
int main (void) {
// Permet de récupérer un pointeur sur la console
// A faire une seule fois au début du main
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// Pour changer le couleur du texte, il suffit d'appeler
// SetConsoleTextAttribute en précisant la couleur
SetConsoleTextAttribute(hConsole, JAUNE);
printf("\nTexte jaune");
SetConsoleTextAttribute(hConsole, ROUGE);
printf("\nTexte rouge");
SetConsoleTextAttribute(hConsole, VERT);
printf("\nTexte vert\n");
SetConsoleTextAttribute(hConsole, GRIS_CLAIR);
// Pour éviter que la fenêtre se ferme à la fin du programme
printf("\n\n");
system("pause");
return 0;
}
Faire constater au professeur