Ping C# ( code problem non résolut)
Forum Programmation : Ping C# ( code problem non résolut)
Voila bonjours a tous ceux qui auront au moins la courtoise d'etre venu sur ce poste....
Voila je suis actuellement en stage dans un entreprise, et je vous arret desuite je vai pas vous demander de faire du code pour moi comme les 90% lon fait avant moi....
moi j'ai fait mon code et j'ai une erreur sur mon programme que je n'arrive pas a trouver....
Voila deja le code:
#include <stdio.h>
#include <stdlib.h>
int menu(){ // Création du menu.
printf("\n\n***********\n menu\n***********\n\n\n" ); // Création des options du menu.
printf("1:Entrer l'adresse IP\n\n" );
printf("2:Entrer Nom DNS\n\n" );
printf("3: Ping sur l'adresse IP/Nom DNS\n\n" );
printf("4:Sortie\n\n\n\n" ); // Création de fin du menu.
int choix;
printf("\n\n Quel est votre choix : \n" );
scanf("%d",&choix);
return choix;
}
int main(){ int choix;
choix=menu();
while(choix!=4){
int a,b,c,d;
char h[30];
if(choix==1){
printf("veuillez taper l'adresse IP::\n" );
scanf("%d",&a);
printf("." );
scanf("%d",&b);
printf("." );
scanf("%d",&c);
printf("." );
scanf("%d",&d);
}
else if(choix==2)
{
printf("veuillez taper le Nom DSN::\n" );
scanf("%s",&h);
}
else if(choix==3){int main()
{
system( ping"%d.%d.%d.%d",a,b,c,d);
getch();
}
else {printf("---------------------------------------------\n***Ce choix n'existe pas***\n Seul les choix 1, 2, 3 et 4 sont disponibles\n---------------------------------------------" );
}
choix=menu();
}
system("pause" );
return 0;
}
Donc si vous n'avez pas compri ce a quoi porte ce programme, il s'agit dun programme qui vous propose d'effecturer un Ping sur un reseau soit a partir d'une adresse IP soit d'une adresse DNS (www.gaalga.fr)[et oui jai pas envi de leur faire de pub
]
berf voila je block sur le ping et mon entre de la valeur dans celui ci je merxplique l'adresse ip est enregistrer grace au menu mais comment dans mon cas present faire un retour sur cette valeur?(je sais qu'en théorie se que j'ai fait, sur papier pour peut etre
fonctionner
Pour finir je suis loing de mon ecole (Avignon/toulouse) et mon prof ne me reponde plus depuis 3semaine
, je suis donc perdu donc jenvoi une petit boué de détersse....!!!
merci d'avence...
salut, tu as du se tromper dans le titre parce que c'est plutot du C que tu fais.
j'ai regardé rapide mais je vois un truc pas tellement beau la
else if(choix==3){int main()
qu'est-ce que c'est que ce main dans le main???
ensuite tu fais comme tu veux mais il serait plus simple de faire saisir l'ip entière direct et puis scanner l'ensemble mais je ne connais pas le sconsignes que tu as.
je crois qu'en virant ce main au milieu tu vas régler ton problème puisque tes variables a b c et d seront connu lorsque tu choisira le choix 3.
[#ff0c00]edit : l'erreur c'est que tu déclare à chaque tour de boucle les a b c et d donc ils sont désalloués à chaque fois et donc le ping ne les connais pas. déclare les une seule fois juste avant ton while[/#ff004c]
Message édité par mcpherson le 27-05-2009 à 10:29:50
Répondre à mcpherson
Alors deja merci d'avoir repondu aussi vite
:
Pour se qui est du else if(choix==3){int main() j'ai modifier pluseur foi la structure de mon programme j'aidu oublier de modifier aussi cette partie :s je modiffierai sa...je ne l'avai pas vu..
Pour ce qui est des consignes, j'en ai pas... je doit juste faire un programme qui ping soit via IP soit via adresse DNS ...c'est tout...
Mais quand tu dit d'editer dierctement l'ip en une seul fois, jaurai bien aimé mais sur le coup jai pas vu comment faire en fait
Message édité par papypm le 27-05-2009 à 10:45:04
et bien je pense que ça doit marcher en laissant faire une saisie du genre 192.168.1.20 par l'utilisateur et toi tu fais un scanf("%s", &ad_ip)
et comme ça tu fais un system( ping"%s", ad_ip);
Répondre à mcpherson
Oké...je vai essayer...javai justement vu des ligne de code comportant ce code et je me demandai a quoi sa pouvai bien servir
je dirai dans l'apré midi si jy suis arriver ou pas...
Donc voila mon code apres le changement:
#include <stdio.h>
#include <stdlib.h>
int menu(){ // Création du menu.
printf("\n\n***********\n menu\n***********\n\n\n" ); // Création des options du menu.
printf("1:Entrer l'adresse IP\n\n" );
printf("2:Entrer Nom DNS\n\n" );
printf("3
ing sur l'adresse IP/Nom DNS\n\n" );
printf("4:Sortie\n\n\n\n" ); // Création de fin du programme.
int choix;
printf("\n\n Quel est votre choix : \n" );
scanf("%d",&choix);
return choix;
}
int main(){ // Initialisation des valeur.
int choix;
choix=menu();
while(choix!=4){
int a,ad_ip;
char h[30];
if(choix==1){ // Premier choix possible
printf("veuillez taper l'adresse IP::\n" );
scanf("%s", &ad_ip);
}
else if(choix==2) // Deusieme choix possible
{
int ad_ip;
printf("veuillez taper le Nom DSN::\n" );
scanf("%s",&ad_ip);
}
else if(choix==3) // Troisieme choix possible
{
int ping; // Ping
system( ping"%s",ad_ip); //Adresse du ping
}
else {printf("---------------------------------------------\n***Ce choix n'existe pas***\n Seul les choix 1, 2, 3 et 4 sont disponibles\n---------------------------------------------" );
}
choix=menu();
}
system("pause" );
return 0;
}
mais j'ai toujour une erreur sur le ping qui ne saute pas....
(j'ai vu que dans le choix 1 et 2 jai declaré la meme variable mais vu que cest pas dans la meme acolade sa devrai etre bon ,nn?et puis meme si ne sont pas les meme j'ai quand meme l'erreur
)
tu fais un scanf de %s mais ad_ip est de type int.
%s est en fait le format pour une chaine de caractères.
donc ad_ip doit etre une chaine : char ad_ip[20];
et ad_ip doit etre déclaré AVANT le while sinon après avoir entrer ton ip et retourner au menu, tu aura une ad_ip nulle
Répondre à mcpherson
comment jai fait pour ne pas voir sa......
bon pour le fait que %s ad_ip dependd'une chaine par contre sa je savai pas
je te remerci bcp!!!!!
je vai tester sa dés maintenant....
Bon voila le code encore une fois je sais que le Ping a toujour une erreur mais sa men a deja retirer pas mal...donc merci
Dsl je sais que j'abuse mais je n'ai pas beaucous travailler en cours et je le pays aujourd hui...mais je m'y met....
#include <stdio.h>
#include <stdlib.h>
int menu(){ // Création du menu.
printf("\n\n***********\n menu\n***********\n\n\n" ); // Création des options du menu.
printf("1:Entrer l'adresse IP\n\n" );
printf("2:Entrer Nom DNS\n\n" );
printf("3
ing sur l'adresse IP/Nom DNS\n\n" );
printf("4:Sortie\n\n\n\n" ); // Création de fin du programme.
int choix;
printf("\n\n Quel est votre choix : \n" );
scanf("%d",&choix);
return choix;
}
int main(){ // Initialisation des valeur.
int choix;
choix=menu();
int ad_ip;
while(choix!=4){
int a;
char ad_ip[20];
if(choix==1){ // Premier choix possible
printf("veuillez taper l'adresse IP::\n" );
scanf("%s", &ad_ip) ;
}
else if(choix==2) // Deusieme choix possible
{
int ad_ip;
printf("veuillez taper le Nom DSN::\n" );
scanf("%s", &ad_ip) ;
}
else if(choix==3) // Troisieme choix possible
{
/* J'ai pri la liberté ici de retirer le "int ping;" vu que sa me le noter comme erreur:s mais je ne sais pas vraiment si j'ai le droit*/
system(ping"%s",ad_ip); //Adresse du ping
}
else {printf("---------------------------------------------\n***Ce choix n'existe pas***\n Seul les choix 1, 2, 3 et 4 sont disponibles\n---------------------------------------------" );
}
choix=menu();
}
system("pause" );
return 0;
}
tu n'abuses pas c'est le but du forum
alors une petite explication :
int ad_ip;
while(choix!=4){
int a;
char ad_ip[20];
le int ad_ip n'a rien à foutre ici prend le et jette le par la fenêtre.
ensuite l'adresse ip est une chaine de caractère soit char ad_ip[20]
celle ci stocke l'adresse saisie par le user.
donc si tu la redéclare dans le while à chaque tour ce que ça va faire c'est ça : l'utilisateur choisis 1 pour taper l'adresse, il saisit puis envoi, elle est stockée dans ad_ip. ensuite tu rappelle la fonction menu qui raffiche les choix puis après le choix tu rentre à nouveau dans la boucle(sauf si tu choisis 4) et là tu fais char ad_ip[20]!!!!
donc tu réalloue une chaine de caractères de nom ad_ip c'est à dire que l'ancien ad_ip est effacé!
j'espère m'expliquer suffisamment, ton adresse doit etre déclaré une seule fois en début de main pour qu'a chaque tour de boucle elle ne soit pas effacée
edit : petit oubli, pour la variable choix tu as fais exactement la meme chose tu l'as déclaré une fois en début de main et ensuite aucune déclaration, fais la meme chose avec cette adresse
Message édité par mcpherson le 27-05-2009 à 14:54:32
Répondre à mcpherson
Ok l'exemple de la variable choix été bien trouver...en fait je metai appercu (travaillant en double screen que je t'avais envoyer la version du code non modifier :s ou presque....mais j'avais deja changer la decraration de la chaine ad_ip [20]
de plus je me demandai la je dit que le maxi de chaine de carathere est 20 mais je peu mettre plus ou pas?(vu que selon la taille de l'adresse DNS)
ah oui biensur tu met autant que tu le veux!
tiens nous au courant
Répondre à mcpherson
pas de souci merci bcp pour ces précieuse information...je posterai le code definitif et fonctionnel quand il sera fini ou que j'aurai amélioré un peu plus le programme....
sa poura peu etre servir a d'autre...qui sai
merci encore une foi
Voial juste histoir de donner des nexs et que ce poste ne tombe pas dans l'oublit total
jen si ici aujourd hui (je sais que j'avance pas trop vite
) mais je me hurte a certaines difficulté que j'ai du mal a passer...
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int menu(){ // Création du menu.
printf("\n\n***********\n menu\n***********\n\n\n" ); // Création des options du menu.
printf("1:Entrer l'adresse IP a pinger\n\n" );
printf("2:Entrer Nom DNS a pinger\n\n" );
printf("3:Sortie\n\n\n\n" ); // Création de fin du programme.
int choix;
printf("\n\n Quel est votre choix : \n" );
scanf("%d",&choix);
return choix;
}
int main(){ // Initialisation des valeur.
int choix;
choix=menu();
char ad_ip1[20],ad_ip2[20];
char str[80];
int n;
n=0;
while(choix!=3){
if(choix==1){ // Premier choix possible
printf("veuillez taper l'adresse IP::\n" );//Adresse du ping IP
scanf("%s", &ad_ip1);
int main();
strcpy (str,"ping " );
printf("%d",str);
strcat (str,"ad_ip1" );
printf("%d",str);
/* system ("ping str" ); */
}
else if(choix==2) // Deusieme choix possible
{
printf("veuillez taper le Nom DSN::\n" );
scanf("%s", &ad_ip2);
int main();
strcpy (str,"ping " );
strcat (str,"ad_ip2" );
system ("ping ""ad_ip2" ); //Adresse du ping Dns
}
else if(choix==3) // Troisieme choix possible
{ }
else {
printf("---------------------------------------------\n***Ce choix n'existe pas***\n Seul les choix 1, 2, 3 et 4 sont disponibles\n---------------------------------------------" );
}
choix=menu();
}
system("pause" );
return 0;
}
salut, tu peux détailler tes difficultés?
je vois des choses très très pas belles quand meme c'est les int main(); dans les if
le main est la fonctionprincipale exécté en premier par le prog donc qu'est-ce que c'est que cette chose?
Répondre à mcpherson
LoL,
encore une foi je m'apperçoit que j'envoi le mauvai code (ghrrr!!)
voici le bon:
(certaine faute persiste tel que les int au milieu des if)
Code :
|
Alors mon problem cest que je fait une chaine de carathere pour le ad_ip1 et ad_ip2 et que j'arrive pas a les faire apparaitre dans le
systeme ("ping [Ici normalement l'adresse IP/Dns]" );
en fait quand je fait le
system ("ping ad_ip1" );
ou le systeme ("ping ad_ip2" );
la valeur enregistrer dans le tableau ne vien pas a la place de ad_ip1/2....
le programme affiche:
La requiet Ping n'a pas pu trouver l'hote ad_ip1.Verifier le nom et esayer à nouveau
mais l'hote devai etre 111.111.111.111 donc un petit souci^^'
Pour te/vous repondre cette chose (bien trouve )
essay de devenir un programme qui tourne et bien que sa me deplai totalement sil faut que je triche sur certaine regle je vai devoir le faire vu le temps quil me reste pour le mettre en fonction...
et cette idee me deplai totalemet mais bon...de plus je commence en programmation donc jai honte a le dire ce que j'envoi ici a deja fait l'objet d'une petite correction par un ami qui me retir pas mal d erreu deja
Message édité par papypm le 04-06-2009 à 14:04:35
alors là je fais du php depuis 2 mois donc je mélange un peu tout mais pour le system fais avant :
char commande[30]=strcat("ping ", ad_ip);
puis system(commande) ou system(*commande) ce genre de trucs mais j'ai vraiment du mal j'ai pas vu de pointeurs et de typage depuis longtemps.
et je relance pareil, vire ces int main dans le code c'est horrible!
allez bonne chance et n'hésites pas à reposter si je te dis de la merde
Répondre à mcpherson
lol non, non pas du tout je m'apperçoit de mes erreur au fure et a meusure...donc np apres je ne fait peu etre pas toute les modification (pk suis deja happy qu il tourne) mais bon vu que l'on me demande deja de le faire évolué, je vai etre obliger de corigé avant de crée une véritable uzine a Gaz
Message édité par papypm le 04-06-2009 à 16:52:04
ouais fais bien gaffe parce qu'en C plus que dans un autre langage c'est vite usinagazesque
Répondre à mcpherson
Bon je suis sur le derniere parti de mon programme et je bloque un peu beaucoup, jai absolution pas vu sa en cours, j'ai fait sa (voir le code) grace a certain tuto mais je seche sur un truc, voila deja le code:
int taille_fichier;
FILE *fichier;
char *adresse;
long taille_file;
int argc;
char *argv[50];
fichier = fopen("E:\\readme.txt", "r" ); //ouverture et lecture dufichier .txt
fseek(fichier,SEEK_END,0); //On fait pointer fichier vers la fin du fichier
taille_fichier=ftell(fichier); /*On met la taille du fichier dans taille_fichier (car fichier pointe vers la fin du fichier,
sa position donne le nombre d'octets pour arriver à la fin) */
fseek(fichier,SEEK_SET,0); //On refait pointer fichier au début du fichier
adresse=(char *)malloc(sizeof(char) * taille_fichier); //Allocation de temp avec la taille du fichier
fscanf(fichier, "%s", adresse);
printf("voila ce qu'il y a dans la liste Ip: %s \n", adresse); //Affichage de se que le programme trouve dans le fichier .txt
strcpy(ping,"ping " );
strcat(ping,adresse);
system(ping);
fclose(fichier);
free(adresse);//On libère adresse
return EXIT_SUCCESS;
bon je ne suis pas tres fiere de ce programme mais bon le but cest quil tourne la que jarrive a la finde mon stage et que jai encore tou la parti rapport que je doi faire donc je veu bien encore un peu d'aide....
salut, alors il faudrait que tu mette le code avec les balises [CODE] parce que c'est illisible et ensuite c'est quoi ton problème exactement?des erreurs ?des trucs que tu comprend pas?
explique toi
Répondre à mcpherson
oula excusez moi erreur
Message édité par mcpherson le 10-06-2009 à 11:43:37
Répondre à mcpherson
Oui cest vrai que je n'ai rien expliquer et que la presentation laise a désirer mdr
voila je pense que sa sera déja mieu:
Code :
|
Alors se bout de code a pour but tout simple re récupéré une adresse ip dans un fichier .txt et de le pinger mais le problemcest que si je veu faire sa sur une seul ip j y arrive mais la il faudrai que je puisse faire tourné mon programme en boucle cest a dire tanqu'il y a des ip enregistrer continuer les ping et si on a fini la liste on recommence...etc...(plus tard si jai le temps jy metrai une fonction, si le ping ne marche pas alors mon prog enregistrera l'ip qui na pas repondu dans un autre fichier bref la cest la mort...^^
si tu veux dire tant qu'il y a des ip dans le fichier tu fais une boucle
while(!feof(fichier))
ton traitement
ça va parcourir chaque ligne et pinger chaque ip
Répondre à mcpherson
le problem cest que non justement le traitement du ip (fichier) s'arret a la premiere ip....il ne prend pas en compte les suivantes
jy ai mis des retour chario, saut de ligne etc...rien n'y fait
tu aurai une idee?
et bien il y a une incompréhension : tu veux que ça parcours toutes les ip du fichier c'est bien ça?
si oui fais ce que je t'ai dis à savoir une boucle while(!feof(fichier)) qui permet de faire un traitement sur chaque ligne du fichier
Répondre à mcpherson
Alors oui en effect on parlai tout les deux de la meme chose mais on etai focaliser sur notre idée
Serieusement jaurai essayer....je vai me contanter d'un seul ping a partir du fichier alors....
je me doute bien que cest moi qui n'ai pas comprit comment utiliser se que tu ma donner vu que sa plante le programme.
Deja a la base je comprend pas bien le code que je tai donner ,vu que je l'avou bien volontier je lai pris sur le net
et un peu modifier pour qu il marche avec le cas present
voila comment je lai utiliser:
Code :
|
j'envoi le code je me dit que tu vera peu etre le truc qui foire
oui ok c'est que tu ouvre le fichier après le while. le feof c'est un marqueur de fin de fichier donc tu dois oouvrir ton fichier avant et vérifier qu'il est bien ouvert puis ensuite tu fais le while.
par contre ensuite tu as des ftell et fseek byzarre je crois.
le plus simple est d'utiliser la fonction fgets qui permet de récupérer une ligne du fichier donc une adresse ip.
la structure serait donc :
ouvrir fichier
lire une ligne par fgets
tant que fichier non fini(while feof)
{
traitement sur cette adresse ip donc le ping
relire une ligne du fichier par fgets
}
autrement dit tu lis une ligne, tu vérifie que ça n'est pas la fin de fichier, si c'est pas la fin tu ping puis tu lis une autre ligne, grace à la boucle ça va vérifié si ce n'est pas la fin de fichier etc...
est-ce plus clair?
Répondre à mcpherson
ouep mais sa je ne serai pas le faire cest claire^^ pas grave je vai essayer quand meme histoire de dire que jaurai essayer mais pour linstant ce programme n'avancera pas plus....
Merci encore a toi
Message édité par papypm le 11-06-2009 à 09:50:35
Tu aurai une corde et un tabouret???
serieu j'en ai mar de ce programme vivement que je change.....j'avai un programme fonctionnel,etc... mais on ma demander de rajouter une simple fonction pour effacer les page precedente sur la commande dos....
je lai fait et le programme ne fonctionne plus, meme si je retir les fonction que je venai d'implémenté (seul le choix 4 ne fonctionne plus, tu pourai regarder en 2 2,stp) jarrive en fin de stage et cest la galere...serieu sa ne pouvai pas m arriver 1 semaine avant quand "javai plus rien a faire"..........
Code :
|
Message édité par papypm le 17-06-2009 à 10:45:41
je sais que c'st abuser se que je vai faire mais bon , cest assez important pour moi la....
voila je vien de poster un autre poste pk j'ai des problemes avec la lecture du fichier pour les ping donc si tu pouvai y jetter un coup d'oeil sa serai cool merci
p.s: voila le lien http://www.infos-du-net.com/forum/ [...] re-fichier
Il y a 1758 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
