[.NET2] TESTER L'INTERCONNECTION À INTERNET (PAR ICMP TRACEROUTE)

hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 - 2 juil. 2007 à 10:35
kisecure Messages postés 8 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 3 juillet 2007 - 3 juil. 2007 à 19:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43312-net2-tester-l-interconnection-a-internet-par-icmp-traceroute

kisecure Messages postés 8 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 3 juillet 2007
3 juil. 2007 à 19:39
tout dépend le besoin que l'on a du script, afin d'être démocratique je dirais que des utilisateurs trouverons surement leur bonheur avec les différentes possibilités que nous avons proposés toi et moi. Le choix que j'ai fait d'utiliser l'incrémentation de TTL et la détection de la première IP publique était justifiée dans mon projet et je pense que certains développeurs (peut etre pas VB) trouverons une utilité. L'utilisation d'une regex est très rapide et ne laisse pas le temps au sablier d'apparaitre (sauf peut etre sur un WinXP/486dx ;) lol ).


Cordialement,
Nicolas
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 juil. 2007 à 19:13
Un connect() sur MS et Google ne suffit pas à savoir si on est branché au net ?
Semble très bien passer partout où on l'a mise avec nos produits.

Que ne soit pas en .net mais c'est tant mieux pour l'utilisateur, un interprété est fait pour utiliser des composants, surtout pas autre chose sinon c'est sablier en permanence.
kisecure Messages postés 8 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 3 juillet 2007
3 juil. 2007 à 18:54
Très bien mais ce n'est pas du vb.net donc. Nous somme ici sur un site qui parle de Visual Basic... effectivement si on développe dans d'autre langage les performances peuvent être mieux optimisé. Chaque langage a ses avantages et inconveniants. Prenons l'exemple de Fr08, 64ko la demo de plusieurs minutes dev en asm ;) peut on faire de meme en vb.net? reponse NON :)
Mais une personne qui veux faire que du VB et ne connait que ca pourra grace a ce bout de code faire ce test, effectivement c'est lourd dû au langage... mais on peut tj faire une transcryption de l'idée en un autre language...

Mais le soussis principal c'est que ta dll (bnConn.dll) je suppose ne fait pas la meme chose que mon bout de code...
toi tu fais quoi?
Et bien c'est simple apparement en analysant cette DLL tu test des connections vers des sites connus (microsoft.com et google.com) :
soucis :
1 - Si ces site ne reponde plus pour une raison ou une autre (problème de route vers ces sites, filtrage vers ce site, dns, etc...) ton programme repond: pas d'internet!
2 - Si les entrées dns ne sont pas valide ou que le serveur dns est HS ou mal configuré, ta dll repond pas d'internet!

2.5ko oui mais qui fait pas grand chose!

Le but de mon extrait de code est de montrer un moyen de tester une connection sans pour autant faire appel a des protocoles spécifiques, mais n'utiliser que le minimum. Ainsi en cas d'erreur eventuelle de configuration DNS, du fichiers hosts, d'un serveur qui changerait de politique en ne répondant plus au PING, ma solution reste efficace car ce sont les routeurs internet qui répondent et eux ne peuvent en aucun cas ne pas renvoyer de messages ICMP car c'est leur rôle (cf ccm :p ) de renvoyé des message ICMP (comme tu le sais la valeur TTL que j'incrémente permet d'éviter d'avoir des packet qui se baladerait infiniment sur le net.)
Si tu peux me garantir que ta dll ne fera jamais d'erreur je serais admiratif, car en modifiant mon fichiers hosts (pense a flusher ton cache DNS) j'ai pu voir que je n'avais plus de connexion internet en y rajoutant 2 lignes !

Dans le cas ou tu developperais une appli qui test les options réseaux, il convient de vérifier le bon fonctionnement du routage IP avant la config DNS :p

Cordialement
nicolas
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
3 juil. 2007 à 17:52
HVB : effectivement on utilise le ping... donc le protocole ICMP qui est le protocole de controle d'internet. Je ne vois pas d'autre moyen simple pour effectuer ce test....

C'est bien ce qu'on dit. Test de connexion internet? Ping! Pas vraiment besoin de source pour ça...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 juil. 2007 à 17:43
Te fache pas, ces lourdeurs sont inhérentes aux interprétés, je ne t'ai pas mis en cause.
Ma solution est dans une dll de 2.5 Ko dont j'ai fourni le lien.
kisecure Messages postés 8 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 3 juillet 2007
3 juil. 2007 à 17:17
HVB : effectivement on utilise le ping... donc le protocole ICMP qui est le protocole de controle d'internet. Je ne vois pas d'autre moyen simple pour effectuer ce test....

Et puis on ne reviend pas au même point. Un ping est un packet icmp qui a comme ttl 128 (par default) donc on peut passé par 128 routeurs avant d'atteindre la destination.
Mon bout de code utilise "un ping" qui a un ttl qui s'accrémente (tout comme la commande tracert), donc cela veut dire que l'on connait la route empreintée par le packet pour atteindre la destination.
Si on obtient une reponse d'un routeur public (donc qui est sur internet) on aura la certitude que l'on est bien connecté sur le net!

Donc il remplit mieux son role qu'un ping simple.

Pour les regex... que faut il mieux faire? un bout de code qui décompose l'ip et qui calcule sont appartenance a une classe d'adresse privé ou public? ou effectuer une simple regex?
Peut importe la meilleur solution j'ai proposé la mienne.
A toi maintenant de proposer la tienne qui sera a tes yeux moins "calamiteuse"!

Je ne vous ai que présenté mon idée qui marche bien... et à vous de l'adapter et de l'optimiser.

Cordialement,
Nicolas
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 juil. 2007 à 19:11
C'est tout de même une calamité toutes les ressources mises en oeuvre (retour de ping sur lequel on fait un regex).
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
2 juil. 2007 à 16:44
Kisekure : oui enfin c'est mieux sous la forme actuelle
Willi : +1
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
2 juil. 2007 à 16:39
On en revient au meme point....le ping.
kisecure Messages postés 8 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 3 juillet 2007
2 juil. 2007 à 13:38
Bonjour,
Ce bout de code est la juste pour vous aider ;)
Il est imparfait à vous de faire le necessaire dans vos applications.(test, gestion d'erreur etc...)


Il a été créé pour aider les users qui ont posté des commentaires sur :
http://www.vbfrance.com/codes/NET2-TESTER-CONNECTION-INTERNET-AUTRE-METHODE-HTTPWEBREQUEST_36008.aspx

Pour répondre à HVB, l'host en question est celle de www.free.fr, on peut mettre n'importe quel IP public étant donnée que ce bout de code verifie la route empreinté pour dédecter une ip public donc que l'on est bien connecté sur internet ;) ...

Et puis pour Triboutmatthieu, non pas pour l'instant je ne pense pas que cela soit util... ( crt+C puis crt+V dans ton projet ;) )

Voila
:)
Bonne journée,
Nicolas
Triboutmatthieu Messages postés 206 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
2 juil. 2007 à 13:03
Et on voudrez ton projet en téléchargement stp merci
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
2 juil. 2007 à 10:35
c'est quoi ces hosts en dur...? ^^
Essaye de rendre ça plus "portable"
Rejoignez-nous