billut
Messages postés74Date d'inscriptionlundi 23 mai 2005StatutMembreDernière intervention 5 décembre 2008
-
16 févr. 2006 à 10:55
billut
Messages postés74Date d'inscriptionlundi 23 mai 2005StatutMembreDernière intervention 5 décembre 2008
-
16 févr. 2006 à 12:03
"hello world !"
voila jai un "petit" probleme, j'ai créé un code qui me permet de faire un traceroute a partir dun ping, avec un Ttl de 1 et en l'augmentant de 1 a chaque routeur traversé.
bref, jai dans mon code une erreur, lorsque quand je fait un tracert ca indique "*",ici ca bloque lors de l'affectation de adr_passerelle=reply.Adress.ToString(); , car cette valeur ne peut pas etre nulle, alors, j'ai mis une condition "if" mais le probleme cest :
>> lorsque jexcécute le programme, ca me dit erreur a la ligne adr_passerelle et ca ne méxcécute pas le "if" cat il est placé aprés, et si je le place avant, adr_passerelle ne sera pas connue.
voila, ca fait 3jours que je suis dessus, j'en peux plus la..
SVP aidez moi...
string adr_passerelle = reply.Address.ToString();
long round_trip_time = reply.RoundtripTime;
if (adr_passerelle "") adr_passerelle "*";
MessageBox.Show(
"reply.Adress test = " + adr_passerelle,
"reply.adress",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 16 févr. 2006 à 11:14
Je ne suis pas sur que ton if puisse résoudre le problème : il y a une différence entre 'null' et ""... Le premier concerne un objet, le second une chaine vide.
Je pense plutot que ton erreur viens :
- soit de l'objet 'reply', qui est null lorsque tu arrive à la ligne qui plante
- soit de l'objet 'reply.Address' qui est null lui aussi a ce moment la...
Tu devrais trouver cette erreur très rapidement en débuguant, sinon essaye deja de mettre cela :
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 16 févr. 2006 à 11:20
4s de différence...je crois qu'on a pas fait pire encore ;-)
Sinon effectivement je n'ai pas penser à reply, ça me parressait évident qu'il ne soit pas null mais ça peut être le cas.
Cependant ton test peut être raccourci :
if(reply != null)
{
if(reply.Address != null)
{
adr_passerelle = reply.Address.ToString();
}
}
billut
Messages postés74Date d'inscriptionlundi 23 mai 2005StatutMembreDernière intervention 5 décembre 2008 16 févr. 2006 à 11:30
Voici mon code en un peu plus complet :
args cest l'argument que je met, l'adresse Ip de destination..
Le probleme cest dans le Else, il faudrait que j'arrive a mettre que le reply.Adress soit égal a "*" et non a null
if (reply.Address !=
null)
{
string adr_passerelle = reply.Address.ToString();
//adresse de passerelle
long round_trip_time = reply.RoundtripTime;
//durée en ms de la requete ping
billut
Messages postés74Date d'inscriptionlundi 23 mai 2005StatutMembreDernière intervention 5 décembre 2008 16 févr. 2006 à 11:44
non, * cest pareil que lorsqu'on fait un traceroute sous le shell, lorsque l'on ne peut pas joindre l'hote, ca met *, ici cest pareil, lorsque Reply.Adress == null alors Reply.Adress. devrait prendre cette valeur "*".
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 16 févr. 2006 à 11:55
Dans le cas de la commande, * est juste une représentation graphique.
Une instance d'IPAddress ne peut pas prendre cette valeur, par contre tu peux probablement te servir du champs statique None pour représenter *.
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 16 févr. 2006 à 11:59
reply.Address est de type IpAddress, donc tu peux essayer cela :
if(reply.Address == null)
{
reply.Address = new IPAddress(IPAddress.Broadcast);
}
Ce qui te metra une adresse de broadcast...
Mais je ne sais pas si c'est que tu cherches en fait.... Tu ne peux pas mettre "*" dans une adresse IP. Si le "*" te sert a détecter comme tu le dis que l'hote n'est pas joignable... et bien dans ce cas laisse ton code comme il est :
si reply.Address == null >> alors l'hote n'est pas joignable et tu fait le traitement que tu dois faire dans ce cas.