[.NET2] TESTER LA CONNECTION À INTERNET (AUTRE MÉTHODE PAR HTTPWEBREQUEST)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
12 févr. 2006 à 15:29
Mayman360
Messages postés1Date d'inscriptionlundi 25 août 2008StatutMembreDernière intervention 5 mars 2011
-
5 mars 2011 à 19:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Mayman360
Messages postés1Date d'inscriptionlundi 25 août 2008StatutMembreDernière intervention 5 mars 2011 5 mars 2011 à 19:00
Bon, je viens de passer au travers tous les commentaires et entrepris une recherche! Voilà donc ce que j'ai trouvé et je dois dire que ça reviens pas mal à la solution offerte au début de la discussion :
''' <summary>
''' Function using WebRequest and WebResponse to check
''' for an internet connection
''' </summary>
''' URL we wish to check (make sure to use one that
''' is online all the time, such as Google or Microsoft.com
''' <returns></returns>
''' <remarks></remarks>
Public Function HasInternetConnection(ByRef url As String) As Boolean
Dim uri As New System.Uri(url)
'Create a new WebRequest
Dim request As WebRequest = WebRequest.Create(uri)
'Create new WebResponse for checking the response
'from our WebRequest
Dim response As WebResponse
Try
'If we get a response then we are successful
response = request.GetResponse()
'Close and dispose
response.Close()
request = Nothing
response.Close()
request = Nothing
'Return true and a connection was made
Return True
Catch ex As Exception
'Whoops, got an error so no connection is present
Return False
End Try
End Function
hsaturn
Messages postés14Date d'inscriptionjeudi 6 octobre 2005StatutMembreDernière intervention 3 juin 2007 22 mars 2010 à 09:38
En fait, je me demande carrément si c'est possible de tester une connexion internet avec 100% de fiabilité.
Un exemple simple : si la connexion passe par un proxy/firewall, le ping peut être tout simplement bloqué.
Pire encore, imaginons deux utilisateurs humains, qui doivent répondre à cette question en face d'un PC.
L'un deux n'utilise que Firefox, l'autre n'utilise Que Internet Explorer....
Seul Firefox est configuré pour accéder à internet via proxy.
Devinez quelle sera la réponse des deux utilisateurs à la question <<cet ordinateur est-il connecté ?>>
Je pense donc que cette réponse est définitive :
A MON SENS, IL EST IMPOSSIBLE DE SAVOIR SI ON EST CONNECTE A INTERNET !!!
Tout simplement. En effet, aucun bout de code au monde ne pourra connaître mon login/mot de passe pour passer le proxy !!!!
C'est bien pour ca que les fonctions de micromou n'étaient pas fiables et qu'aucun bout de code ne sera jamais fiable.
Ajoutons à cela la très bonne intervention de PCPT : Quid des popups de connexion à internet ?
Qu'en pensez vous ?
marco62118
Messages postés35Date d'inscriptionmercredi 30 janvier 2008StatutMembreDernière intervention25 juin 2015 12 avril 2009 à 19:55
bonjour à tous
brunews est il possible d'avoir la source de ta dll si elle esten vb?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 20 mars 2009 à 10:19
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 31 mars 2008 à 12:02
NIET, je ne fais aucune requête HTTP pas plus que de PING et ma dll fonctionne.
Un simple connect() sur un socket suffit amplement.
Lord_Folkien
Messages postés5Date d'inscriptionvendredi 17 octobre 2003StatutMembreDernière intervention31 mars 2008 31 mars 2008 à 11:37
Heu bon certaines informations indiquées dans les commentaires ne sont pas vraiment exacte.
1° les méthodes fournies pas MS pour contrôler la connexion internet ne fonctionne que dans les connexions internet spécifiques à la machine comme des connexion PPP pour toutes connexions lan c'est inefficace.
2° la methode de faire appelle à un ping fonctionne dans un environnement où l'ordinateur est directement connecter, ou seulement derrière un nat et/ou firewall. Si tu es derrière un proxy, oublie ça ne fonctionne pas.
la seule méthode à ma connaissance pour palier à toutes les éventualité, est une requête http.
Maintenant au sujet de la fiabilité du teste, effectivement dans l'absolu faire un ping sur un site pour voir si la connexion est up n'est peut être pas ce qu'il y a de plus générique, mais si on regarde honnêtement certain site comme google sont en fait un groupe de serveur et si par hasard l'un d'entre eux tombe, pour nous user ça ne change rien car on est simplement rediriger. Donc la probabilité de voir l'intégralité de l'infrastructure de google tomber est très très faible.
kisecure
Messages postés8Date d'inscriptionlundi 2 juillet 2007StatutMembreDernière intervention 3 juillet 2007 2 juil. 2007 à 03:37
Il faut encore la travaillé (faire des try et gestion erreur) mais ca marche ;)
A bientot!
Nicolas
kisecure
Messages postés8Date d'inscriptionlundi 2 juillet 2007StatutMembreDernière intervention 3 juillet 2007 2 juil. 2007 à 01:30
Bonjour à tous! en lisant vos commentaires il m'est venut une idée! :)
Une solution simple pour tester si la connection internet est active (solution à développer!) :
1 - Tester si les interfaces réseaux sont up (avec WMI par ex)
2 - Faire un traceroute vers une adresse IP public en verifiant le resultat :
Dès que l'on obtient une adresse IP diférente d'une classe privé on arrête le traceroute.
3 - Si IP Public => connection UP
Si pas ip public => connection DOWN
Marche uniquement si vous etes connecté directement au NET :) (box, modem etc...) donc pas dans le cas d'une connection par le bié d'un proxy local :)
Je vais essayer de vous faire une petite source pour cela
Bon courage à tous!
Nicolas
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 22 juin 2007 à 09:24
Brunews, IsWeb tester en entreprise derrière un proxy,firewall tout "va bon" comme du le dis si bien ;) (juste un peu plus long qu'en connection directe.)
hsaturn
Messages postés14Date d'inscriptionjeudi 6 octobre 2005StatutMembreDernière intervention 3 juin 2007 22 juin 2007 à 01:14
Mon ptit grain de sel
1/ Tester l'adresse IP n'est pas valable. Dans un intranet, on possède une IP genre 192.xx et on peut ou ne pas être connecté à internet. Aucune information de ce coté la.
2/ La solution de bdminf84 ne marche pas, mais c'était presque ça !
En effet, le serveur DNS peut très bien être local (intranet) mais dans une zone DMZ (internet accessible pour lui seul et/ou pour la DMZ), le méchant firewall lui, ne nous laissera pas passer (Zone militarisée), tandis qu'il laissera le serveur DNS accéder aux serveurs de nom externes et te répondre !
3/ Le ping me paraît valable moi. si on fait 2 gros hébergeurs (france / us), on risque pas de se planter. Si les deux sont en panne, c'est sans doute que la terre n'existe plus ou est envahie de dechets radioactifs...
Je compatis avec le firewall qui risque de hurler en revanche... Mais on n'a rien sans rien ....
Au final, je crois qu'on est d'accord : ping
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 juin 2007 à 23:05
Qui veut tester:
http://brunews.com/IsWeb.zip Va bon sur routeur de ma fibre et wifi mais je n'ai pas de connexion partagée et j'aimerais bien savoir si répond correctement.
La DLL (PAS DE regserver, c'est API !!!) ne fait pas de PING, utilisation directe des sockets.
Exporte bnWebOk() As Long, retourne 0 si pas web dispo, utilisation libre.
bdminf84
Messages postés4Date d'inscriptionjeudi 2 mai 2002StatutMembreDernière intervention17 janvier 2007 17 janv. 2007 à 01:11
Pour ajouter mon grain de sel à la discussion :
J'aurai personnelement tendance à penser que pour vérifier sa connexion il suffit de tester son DNS (enfin l'adresse du DNS que son fournisseur d'accès nous fournis).
Car ca me parait assez facile à faire et qu'a priori si le serveur de votre DNS ne tourne pas ce n'est pas la peine de chercher à lancer des requêtes sur Internet...
Je n'ai pas de code à vous donner, mais voici 2 méthodes (y'a en plein d'autres) :
- par socket : on récupére le dns que la connexion réseau (équivalent de ipconfig /all) puis on tente d'ouvrir le port UDP 53 du serveur DNS
- par reverse : on récupére son hote reverse (j'ai vu des sources pour faire ca) car a priori si on a bien un hote sur Internet ce que l'on est bien sur internet...
Bien sur la solution de pinger google est pour moi valable vu leur fiabilité mais c'est compter sur quelqu'un d'autres et c'est bien plus un test de serveur qu'autre chose... mais ca prends 5 minutes à coder... tout dépends de l'application que l'on cherche à réaliser...
Sharkiller
Messages postés71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention 9 janvier 2009 24 sept. 2006 à 15:46
Ah bon ok^^
Pourtant je me servais de ça pour lancer dès applis à chaque reconnection et ça marchait impec' ;)
Mais bon si c'est pas ça.. tant pis^^
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 24 sept. 2006 à 15:35
tu te trompes ;)
cette adresse existe dès que tu as une carte réseau (127.0.0.1)
aucun rapport donc.
++
Sharkiller
Messages postés71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention 9 janvier 2009 24 sept. 2006 à 15:30
Sinon y'a peut-être une autre solution:
Voir si l'adresse IP est locale (127.x.x.x) ou pas..
Ca c'est possible et y'a pas besoin d'aller sur un site.
Dites-moi si je me trompe..
Mycado
Messages postés50Date d'inscriptionlundi 30 juin 2003StatutMembreDernière intervention16 mai 2008 3 août 2006 à 13:40
Internet c'est quoi ? C'est un reseau interconnecté .. Donc si tu n'as pas accès aux interconnexions, on N'est PAS sur internet.
Dans ce cas, le ping de ton fournisseur et le ping d'une grosse enseigne (google ?) est plus que largement suffisant.
Et cela reste très propre. Car, pouvez vous me dire l'interet de savoir que l'on est connecté à "internet" si nous ne pouvons pas accèder aux sites présents sur internet ? AUCUN.
Le ping est donc bien un moyen "propre" de savoir si l'on est connecté à internet :)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 juin 2006 à 13:23
gRRrrRR !
un ping (google) avec CreatePipe en VB6... le FireWall demande la permission!!
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 juin 2006 à 12:36
ok merci BruNews
(donc sujet encore à creuser pour VB6..., satané mono-thread!)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 juin 2006 à 11:51
Une tentative de connexion directement au niveau des sockets n'affichent bien entendu rien du tout (composant pré-maché aucune idée), il faut mettre l'appel dans un thread (exit VB6...) car la notif d'erreur met qlqs secondes.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 juin 2006 à 11:34
salut,
forum scruté de long en large et après de multiples tests, que ce soit les API InternetGetConnectedState, InetIsOffline ou InternetAttemptConnect, on a de temps en temps un retour True alors que c'est False!!
un ping ou une tentative de téléchargement, pourquoi mais vous souvenez-vous... il y a des siècles.... à l'époque du 56K :p
ma question est donc : est-ce qu'il n'y a AUCUN risque qu'un tel appel (peu importe le langage) lance la connection ou la fenêtre de connection pour les non-illimités?
PCPT [AFCK]
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 29 avril 2006 à 22:04
jeffwow, il semblerait que tu n'aies pas lu les commentaires plus haut.
Dommage...
jeffwow
Messages postés140Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention 5 septembre 20141 5 avril 2006 à 22:38
cs_Blanc
Messages postés181Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention16 octobre 2006 30 mars 2006 à 13:45
OK.. si tu le dis.. j'avais pas encore testé justement.. merci alors..
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 30 mars 2006 à 13:42
Non, ici tu testes si ton pc est connecté à un réseau
Pour la connexion internet on teste avec my.computer.network.ping("...")
cs_Blanc
Messages postés181Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention16 octobre 2006 30 mars 2006 à 13:26
Salut salut..
j'ai lu vaguement tout les messages ci-dessus.. j'ai remarqué pas mal de tension chez certain.. enfin bref, tout ça pour dire que j'ai vu un truc hier en tatonant dans les listes de vb.net cette fonction (variable):
my.Computer.Network.IsAvailable
Elle retourne une valeur boolean (soit true, soit false..) alors je l'ai pas testée à fond.. mais je crois bien qu'elle permet de savoir si l'ordinateur a une connection à internet..
Voilà.. dites-moi si je me trompe.. :)
(ah oui, c'est du vb 2005 (framework 2.0))
aH+
blanc
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 15 mars 2006 à 16:19
La pluparts des arguments auquels j'ai pensé ont déja été evoqué, et malgré ça acrcorp, tu persistes... c'est trop lol!
Tu parles de 15 ping sur 15 sites differents... arrete, 1 ping sur google, 1 sur microsoft et tu peux à 99,99% confirmer l'état de ta connexion... perso j'aurais meme pinger QUE google...
Que ce soit en cours à la demande de mon prof de reseau ou au taf à la demande de mon maître d'apprentissage, le test de connexion à internet d'une nouvelle machine sur un reseau consiste betement à :
1 pinger la passerelle, 2 pinger google... si erreur, jamais ça n'est venu du fait que google etait down...
Desolé de l'inutilité de ce commentaire, je voulais trop y mettre mon grain de sel ^^
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 23 févr. 2006 à 19:56
Dans ce cas, tous les codes que l'on trouve sur le site et qui prétendent pouvoir tester l'état de la connexion internet, c'est de l'arnaque alors ?
Moi je n'ai pas de réseau local alors j'ai jamais été confronter à ce problème (réseaux local qui est pris pour de l'internet).
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 févr. 2006 à 09:36
Le langage n'entre pour rien dans l'affaire.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 23 févr. 2006 à 01:27
Je confirme ce que dit Willi, moi j'ai aucun moyen de savoir si je suis connecté au net! je met un cable réseau on me donne une IP et je n'ai aucun moyen de savoir si je suis connecté au net !
Et ca ca vient pas de .net ou autre ! si en VB6 (le truc hyper vieux ;)) ou en C++ tu peux, on attend de voir !
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 23 févr. 2006 à 01:09
Pas la moindre idée en .net
Je ne sais pas résoudre votre problème, je sais juste dire que c'est surement pas comme ça qu'il faut faire, c'est tout ;)
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 23 févr. 2006 à 00:57
Si tu as un réseau local qui se connecte à internet via un routeur.
Tu le vois comment toi l'état de ta connexion à INTERNET ?
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 23 févr. 2006 à 00:47
> Alors comment fais tu toi en tant que personne pour
> savoir si t'es connecté sur internet ?
Je regarde l'état de ma connexion, là où est indiqué la vitesse de connexion etc...
Vous savez, votre idée ne résite pas à une analyse sérieuse. Je ne dis pas que dans la pratique ça ne donne pas de résultat "suffisant", mais je veux juste dire que cette façon de faire n'est pas propre... (même si c'est suffisant pour bricoler dans son garage). En tout cas, jamais de la vie je n'implémenterai un truc pareil de peur que d'autres le découvre ;)
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 22 févr. 2006 à 23:24
oui mais bon pour que google.fr ou microsoft.fr ou bien autre grosse structure tombe en rideau....
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 22 févr. 2006 à 23:23
Alors comment fais tu toi en tant que personne pour savoir si t'es connecté sur internet ?
quelle est la différence entre un intranet local et internet ?
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 22 févr. 2006 à 22:21
> Toi pour savoir si tu as internet tu fais quoi ?
> tu lances ton navigateur et tu regardes si tu as
> accés au site, ce qui revient au meme que de
> faire un ping sur ce site ...
Bin non désolé. Pour une raison très simple :
Si je vais sur ce site et que celui ci ne répond pas, je ne me dis pas : "Puisque le site ne répond pas, alors je suis déconnecté d'internet !!!!"
Désolé, ça le fait pas du tout.
Ensuite, si je vais sur un autre site et qu'il ne répond pas non plus, je ne me dis pas : "C'est sur que mon internet est déconnecté !"
Donc il faut faire quoi ?
Se connecter à 15 sites différents et dire qu'on est déconnecté si les 15 sites répondent KO ? Franchement c'est pas sérieux...
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 22 févr. 2006 à 21:27
Le problème pour trouver un truc mieux est de trouver la réponse à
"qu'est-ce qu'internet ?"
Toi pour savoir si tu as internet tu fais quoi ? tu lances ton navigateur et tu regardes si tu as accés au site, ce qui revient au meme que de faire un ping sur ce site ...
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 22 févr. 2006 à 20:28
Bon alors pour revenir à du constructif,
C'est quand même bien moyen de tester l'état de connexion par un ping... y'a forcement un truc mieux que ça (même si je sais pas où non plus :) )
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 22 févr. 2006 à 11:42
ohé ohé ce n'est pas grave Acrcorp...évite des commentaires comme celui du début si tu n'es pas certains de ce tu avances.
Merci au maitre Brunews d'avoir fournit une explication :)
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 22 févr. 2006 à 09:14
Mea culpa messieur.
Au départ, je n'avais pas noté que la chose concernait .net "exclusivement".
Je retire donc mes propos du début !
Aller, faite pô la geule...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 févr. 2006 à 01:49
InternetGetConnectedState() ne donne absolument plus rien de valable avec les connexions permanentes de type adsl + routeur et c'est devenu le cas général.
Une tentative de connexion est le seul moyen (ping ou autre), peut-être pas de savoir à coup sur si on est connecté mais au moins de tenter d'atteindre un site.
Il faut toujours mesurer ses propos et surtout maitriser parfaitement son sujet avant de vouloir jeter la honte sur quelqu'un, ça se partage si vite...
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 22 févr. 2006 à 01:07
Oui ba va pourrir autres choses que les sources de cette communauté...
Je qui me dérange c'est la manière limite déplacé de ton 1er commentaire.
Redescend sur terre et regarde tes contributions sur vbfrance avant de placer un commentaire comme celui-ci...
Ce sera mon dernier mot acrcorp.fin...
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 22 févr. 2006 à 00:49
hi hi ;)
Je suis un gros pourrisseur de source ;)
Ok c'est pas du ".net" mais ça marche quand même si tu le mets dans ton code. Alors je vois pas bien ce qui te dérange la dedans ?
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 22 févr. 2006 à 00:43
je n'abuse pas...ce que tu me proposes et du code vb pas du .net
J'ai également cherché avec le meme pattern que toi, il n'y a qu'une seule question qui ait trouvé réponse (c'est la réponse que tu donnes) alors ne dis pas qu'il en sort de partout stp...
Mais bon sa y est ont a foutu en l'air ma source avec tout nos commentaires inutiles :)
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 22 févr. 2006 à 00:35
Franchement tu abuses ;)
Il suffit de taper le critère de recherche "connexion internet" et ça en sort de partout des codes. Par exemple :
Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
Public Function IsNetConnectOnline() As Boolean
IsNetConnectOnline = InternetGetConnectedState(0&, 0&)
End Function
Sub Main()
If IsNetConnectOnline() = False Then
MsgBox "Vous êtes actuellement déconnecté.", vbInformation
Exit Sub
Else
MsgBox "Vous êtes actuellement connecté à Internet.", vbInformation
End If
End Sub
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 21 févr. 2006 à 23:32
J'ai cherché dans ce forum est vraiment rien ou alors j'ai pas de chance....
Donne les autres méthodes alors si tu en a trouvé...
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 21 févr. 2006 à 23:19
Tu rigoles là !!!!
Il suffit de rechercher sur ce forum pour en trouver une tetra chiée !!!
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 21 févr. 2006 à 22:57
Je ne vois pas vraiment d'autres moyens pour tester si ton pc est connecté à Internet.....
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 21 févr. 2006 à 22:53
Cette source est présentée comme étant un moyen de tester si on est connecté à internet !!!
Elle ne fait pas ça du tout !!! Elle teste si un serveur répond et ça n'a rien à voir.
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 21 févr. 2006 à 22:10
Pourquoi devrait-on avoir honte ? Si le 1er ping ne donne rien ont ping sur un autre genre www.microsoft.com. Réfléchis.....
Que proposes-tu comme méthode dans ce cas la ?
acrcorp
Messages postés96Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention23 septembre 2007 21 févr. 2006 à 21:55
> Dim ReqHttp As HttpWebRequest = WebRequest.Create
> ("http://www.vbfrance.com")
>
> return My.Computer.Network.Ping("www.google.fr")
Vous avez honte j'espère ? Et si le serveur de google ou vbfrance est rideau... votre connexion internet aussi ? C'est la classe ! Non vraiment !
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201821 12 févr. 2006 à 17:24
Arf je n'avais pas le souvenir d'avoir croisé la méthode ping dans My.
Il me semble qu'on la retrouve dans le namespace Net.NetworkInformation. A confirmer.
Merci pour l'info :)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 12 févr. 2006 à 15:29
En VB .net 2 encore plus rapide :
public function hasInternet() as Boolean
return My.Computer.Network.Ping("www.google.fr") ' google est plus sur que vbfrance :)
end function
Je suis plus trés sur de l'endroit ou se cache la fonction ping, je suis sur qu'elle est dans My :)
5 mars 2011 à 19:00
''' <summary>
''' Function using WebRequest and WebResponse to check
''' for an internet connection
''' </summary>
''' URL we wish to check (make sure to use one that
''' is online all the time, such as Google or Microsoft.com
''' <returns></returns>
''' <remarks></remarks>
Public Function HasInternetConnection(ByRef url As String) As Boolean
Dim uri As New System.Uri(url)
'Create a new WebRequest
Dim request As WebRequest = WebRequest.Create(uri)
'Create new WebResponse for checking the response
'from our WebRequest
Dim response As WebResponse
Try
'If we get a response then we are successful
response = request.GetResponse()
'Close and dispose
response.Close()
request = Nothing
response.Close()
request = Nothing
'Return true and a connection was made
Return True
Catch ex As Exception
'Whoops, got an error so no connection is present
Return False
End Try
End Function
22 mars 2010 à 09:38
Un exemple simple : si la connexion passe par un proxy/firewall, le ping peut être tout simplement bloqué.
Pire encore, imaginons deux utilisateurs humains, qui doivent répondre à cette question en face d'un PC.
L'un deux n'utilise que Firefox, l'autre n'utilise Que Internet Explorer....
Seul Firefox est configuré pour accéder à internet via proxy.
Devinez quelle sera la réponse des deux utilisateurs à la question <<cet ordinateur est-il connecté ?>>
Je pense donc que cette réponse est définitive :
A MON SENS, IL EST IMPOSSIBLE DE SAVOIR SI ON EST CONNECTE A INTERNET !!!
Tout simplement. En effet, aucun bout de code au monde ne pourra connaître mon login/mot de passe pour passer le proxy !!!!
C'est bien pour ca que les fonctions de micromou n'étaient pas fiables et qu'aucun bout de code ne sera jamais fiable.
Ajoutons à cela la très bonne intervention de PCPT : Quid des popups de connexion à internet ?
Qu'en pensez vous ?
12 avril 2009 à 19:55
brunews est il possible d'avoir la source de ta dll si elle esten vb?
20 mars 2009 à 10:19
Pour info, depuis la DLL de BruNews est à l'adresse :
http://brunews.com/brunews/download/IsWeb.zip
Amicalement,
Us.
31 mars 2008 à 12:02
Un simple connect() sur un socket suffit amplement.
31 mars 2008 à 11:37
1° les méthodes fournies pas MS pour contrôler la connexion internet ne fonctionne que dans les connexions internet spécifiques à la machine comme des connexion PPP pour toutes connexions lan c'est inefficace.
2° la methode de faire appelle à un ping fonctionne dans un environnement où l'ordinateur est directement connecter, ou seulement derrière un nat et/ou firewall. Si tu es derrière un proxy, oublie ça ne fonctionne pas.
la seule méthode à ma connaissance pour palier à toutes les éventualité, est une requête http.
Maintenant au sujet de la fiabilité du teste, effectivement dans l'absolu faire un ping sur un site pour voir si la connexion est up n'est peut être pas ce qu'il y a de plus générique, mais si on regarde honnêtement certain site comme google sont en fait un groupe de serveur et si par hasard l'un d'entre eux tombe, pour nous user ça ne change rien car on est simplement rediriger. Donc la probabilité de voir l'intégralité de l'infrastructure de google tomber est très très faible.
2 juil. 2007 à 03:37
http://www.vbfrance.com/code.aspx?ID=43312
Il faut encore la travaillé (faire des try et gestion erreur) mais ca marche ;)
A bientot!
Nicolas
2 juil. 2007 à 01:30
Une solution simple pour tester si la connection internet est active (solution à développer!) :
1 - Tester si les interfaces réseaux sont up (avec WMI par ex)
2 - Faire un traceroute vers une adresse IP public en verifiant le resultat :
Dès que l'on obtient une adresse IP diférente d'une classe privé on arrête le traceroute.
3 - Si IP Public => connection UP
Si pas ip public => connection DOWN
Marche uniquement si vous etes connecté directement au NET :) (box, modem etc...) donc pas dans le cas d'une connection par le bié d'un proxy local :)
Je vais essayer de vous faire une petite source pour cela
Bon courage à tous!
Nicolas
22 juin 2007 à 09:24
22 juin 2007 à 01:14
1/ Tester l'adresse IP n'est pas valable. Dans un intranet, on possède une IP genre 192.xx et on peut ou ne pas être connecté à internet. Aucune information de ce coté la.
2/ La solution de bdminf84 ne marche pas, mais c'était presque ça !
En effet, le serveur DNS peut très bien être local (intranet) mais dans une zone DMZ (internet accessible pour lui seul et/ou pour la DMZ), le méchant firewall lui, ne nous laissera pas passer (Zone militarisée), tandis qu'il laissera le serveur DNS accéder aux serveurs de nom externes et te répondre !
3/ Le ping me paraît valable moi. si on fait 2 gros hébergeurs (france / us), on risque pas de se planter. Si les deux sont en panne, c'est sans doute que la terre n'existe plus ou est envahie de dechets radioactifs...
Je compatis avec le firewall qui risque de hurler en revanche... Mais on n'a rien sans rien ....
Au final, je crois qu'on est d'accord : ping
1 juin 2007 à 23:05
http://brunews.com/IsWeb.zip
Va bon sur routeur de ma fibre et wifi mais je n'ai pas de connexion partagée et j'aimerais bien savoir si répond correctement.
La DLL (PAS DE regserver, c'est API !!!) ne fait pas de PING, utilisation directe des sockets.
Exporte bnWebOk() As Long, retourne 0 si pas web dispo, utilisation libre.
17 janv. 2007 à 01:11
J'aurai personnelement tendance à penser que pour vérifier sa connexion il suffit de tester son DNS (enfin l'adresse du DNS que son fournisseur d'accès nous fournis).
Car ca me parait assez facile à faire et qu'a priori si le serveur de votre DNS ne tourne pas ce n'est pas la peine de chercher à lancer des requêtes sur Internet...
Je n'ai pas de code à vous donner, mais voici 2 méthodes (y'a en plein d'autres) :
- par socket : on récupére le dns que la connexion réseau (équivalent de ipconfig /all) puis on tente d'ouvrir le port UDP 53 du serveur DNS
- par reverse : on récupére son hote reverse (j'ai vu des sources pour faire ca) car a priori si on a bien un hote sur Internet ce que l'on est bien sur internet...
Bien sur la solution de pinger google est pour moi valable vu leur fiabilité mais c'est compter sur quelqu'un d'autres et c'est bien plus un test de serveur qu'autre chose... mais ca prends 5 minutes à coder... tout dépends de l'application que l'on cherche à réaliser...
24 sept. 2006 à 15:46
Pourtant je me servais de ça pour lancer dès applis à chaque reconnection et ça marchait impec' ;)
Mais bon si c'est pas ça.. tant pis^^
24 sept. 2006 à 15:35
cette adresse existe dès que tu as une carte réseau (127.0.0.1)
aucun rapport donc.
++
24 sept. 2006 à 15:30
Voir si l'adresse IP est locale (127.x.x.x) ou pas..
Ca c'est possible et y'a pas besoin d'aller sur un site.
Dites-moi si je me trompe..
3 août 2006 à 13:40
Dans ce cas, le ping de ton fournisseur et le ping d'une grosse enseigne (google ?) est plus que largement suffisant.
Et cela reste très propre. Car, pouvez vous me dire l'interet de savoir que l'on est connecté à "internet" si nous ne pouvons pas accèder aux sites présents sur internet ? AUCUN.
Le ping est donc bien un moyen "propre" de savoir si l'on est connecté à internet :)
7 juin 2006 à 13:23
un ping (google) avec CreatePipe en VB6... le FireWall demande la permission!!
7 juin 2006 à 12:36
(donc sujet encore à creuser pour VB6..., satané mono-thread!)
7 juin 2006 à 11:51
7 juin 2006 à 11:34
forum scruté de long en large et après de multiples tests, que ce soit les API InternetGetConnectedState, InetIsOffline ou InternetAttemptConnect, on a de temps en temps un retour True alors que c'est False!!
un ping ou une tentative de téléchargement, pourquoi mais vous souvenez-vous... il y a des siècles.... à l'époque du 56K :p
ma question est donc : est-ce qu'il n'y a AUCUN risque qu'un tel appel (peu importe le langage) lance la connection ou la fenêtre de connection pour les non-illimités?
PCPT [AFCK]
29 avril 2006 à 22:04
Dommage...
5 avril 2006 à 22:38
http://www.dotnet247.com/247reference/msgs/32/161252.aspx
Ils utilisent wininet.dll pour y arriver.
30 mars 2006 à 13:45
30 mars 2006 à 13:42
Pour la connexion internet on teste avec my.computer.network.ping("...")
30 mars 2006 à 13:26
j'ai lu vaguement tout les messages ci-dessus.. j'ai remarqué pas mal de tension chez certain.. enfin bref, tout ça pour dire que j'ai vu un truc hier en tatonant dans les listes de vb.net cette fonction (variable):
my.Computer.Network.IsAvailable
Elle retourne une valeur boolean (soit true, soit false..) alors je l'ai pas testée à fond.. mais je crois bien qu'elle permet de savoir si l'ordinateur a une connection à internet..
Voilà.. dites-moi si je me trompe.. :)
(ah oui, c'est du vb 2005 (framework 2.0))
aH+
blanc
15 mars 2006 à 16:19
Tu parles de 15 ping sur 15 sites differents... arrete, 1 ping sur google, 1 sur microsoft et tu peux à 99,99% confirmer l'état de ta connexion... perso j'aurais meme pinger QUE google...
Que ce soit en cours à la demande de mon prof de reseau ou au taf à la demande de mon maître d'apprentissage, le test de connexion à internet d'une nouvelle machine sur un reseau consiste betement à :
1 pinger la passerelle, 2 pinger google... si erreur, jamais ça n'est venu du fait que google etait down...
Desolé de l'inutilité de ce commentaire, je voulais trop y mettre mon grain de sel ^^
23 févr. 2006 à 19:56
Moi je n'ai pas de réseau local alors j'ai jamais été confronter à ce problème (réseaux local qui est pris pour de l'internet).
23 févr. 2006 à 09:36
23 févr. 2006 à 01:27
Et ca ca vient pas de .net ou autre ! si en VB6 (le truc hyper vieux ;)) ou en C++ tu peux, on attend de voir !
23 févr. 2006 à 01:09
Je ne sais pas résoudre votre problème, je sais juste dire que c'est surement pas comme ça qu'il faut faire, c'est tout ;)
23 févr. 2006 à 00:57
Tu le vois comment toi l'état de ta connexion à INTERNET ?
23 févr. 2006 à 00:47
> savoir si t'es connecté sur internet ?
Je regarde l'état de ma connexion, là où est indiqué la vitesse de connexion etc...
Vous savez, votre idée ne résite pas à une analyse sérieuse. Je ne dis pas que dans la pratique ça ne donne pas de résultat "suffisant", mais je veux juste dire que cette façon de faire n'est pas propre... (même si c'est suffisant pour bricoler dans son garage). En tout cas, jamais de la vie je n'implémenterai un truc pareil de peur que d'autres le découvre ;)
22 févr. 2006 à 23:24
22 févr. 2006 à 23:23
quelle est la différence entre un intranet local et internet ?
22 févr. 2006 à 22:21
> tu lances ton navigateur et tu regardes si tu as
> accés au site, ce qui revient au meme que de
> faire un ping sur ce site ...
Bin non désolé. Pour une raison très simple :
Si je vais sur ce site et que celui ci ne répond pas, je ne me dis pas : "Puisque le site ne répond pas, alors je suis déconnecté d'internet !!!!"
Désolé, ça le fait pas du tout.
Ensuite, si je vais sur un autre site et qu'il ne répond pas non plus, je ne me dis pas : "C'est sur que mon internet est déconnecté !"
Donc il faut faire quoi ?
Se connecter à 15 sites différents et dire qu'on est déconnecté si les 15 sites répondent KO ? Franchement c'est pas sérieux...
22 févr. 2006 à 21:27
"qu'est-ce qu'internet ?"
Toi pour savoir si tu as internet tu fais quoi ? tu lances ton navigateur et tu regardes si tu as accés au site, ce qui revient au meme que de faire un ping sur ce site ...
22 févr. 2006 à 20:28
C'est quand même bien moyen de tester l'état de connexion par un ping... y'a forcement un truc mieux que ça (même si je sais pas où non plus :) )
22 févr. 2006 à 11:42
Merci au maitre Brunews d'avoir fournit une explication :)
22 févr. 2006 à 09:14
Au départ, je n'avais pas noté que la chose concernait .net "exclusivement".
Je retire donc mes propos du début !
Aller, faite pô la geule...
22 févr. 2006 à 01:49
Une tentative de connexion est le seul moyen (ping ou autre), peut-être pas de savoir à coup sur si on est connecté mais au moins de tenter d'atteindre un site.
Il faut toujours mesurer ses propos et surtout maitriser parfaitement son sujet avant de vouloir jeter la honte sur quelqu'un, ça se partage si vite...
22 févr. 2006 à 01:07
Je qui me dérange c'est la manière limite déplacé de ton 1er commentaire.
Redescend sur terre et regarde tes contributions sur vbfrance avant de placer un commentaire comme celui-ci...
Ce sera mon dernier mot acrcorp.fin...
22 févr. 2006 à 00:49
Je suis un gros pourrisseur de source ;)
Ok c'est pas du ".net" mais ça marche quand même si tu le mets dans ton code. Alors je vois pas bien ce qui te dérange la dedans ?
22 févr. 2006 à 00:43
J'ai également cherché avec le meme pattern que toi, il n'y a qu'une seule question qui ait trouvé réponse (c'est la réponse que tu donnes) alors ne dis pas qu'il en sort de partout stp...
Mais bon sa y est ont a foutu en l'air ma source avec tout nos commentaires inutiles :)
22 févr. 2006 à 00:35
Il suffit de taper le critère de recherche "connexion internet" et ça en sort de partout des codes. Par exemple :
Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
Public Function IsNetConnectOnline() As Boolean
IsNetConnectOnline = InternetGetConnectedState(0&, 0&)
End Function
Sub Main()
If IsNetConnectOnline() = False Then
MsgBox "Vous êtes actuellement déconnecté.", vbInformation
Exit Sub
Else
MsgBox "Vous êtes actuellement connecté à Internet.", vbInformation
End If
End Sub
21 févr. 2006 à 23:32
Donne les autres méthodes alors si tu en a trouvé...
21 févr. 2006 à 23:19
Il suffit de rechercher sur ce forum pour en trouver une tetra chiée !!!
21 févr. 2006 à 22:57
21 févr. 2006 à 22:53
Elle ne fait pas ça du tout !!! Elle teste si un serveur répond et ça n'a rien à voir.
21 févr. 2006 à 22:10
Que proposes-tu comme méthode dans ce cas la ?
21 févr. 2006 à 21:55
> ("http://www.vbfrance.com")
>
> return My.Computer.Network.Ping("www.google.fr")
Vous avez honte j'espère ? Et si le serveur de google ou vbfrance est rideau... votre connexion internet aussi ? C'est la classe ! Non vraiment !
12 févr. 2006 à 17:24
Il me semble qu'on la retrouve dans le namespace Net.NetworkInformation. A confirmer.
Merci pour l'info :)
12 févr. 2006 à 15:29
public function hasInternet() as Boolean
return My.Computer.Network.Ping("www.google.fr") ' google est plus sur que vbfrance :)
end function
Je suis plus trés sur de l'endroit ou se cache la fonction ping, je suis sur qu'elle est dans My :)