SAVOIR SI CONNECTÉ AU NET EN 4 LIGNE AVEC WINSOCK

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 - 9 nov. 2004 à 17:16
cs_ra3d Messages postés 3 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 3 juillet 2007 - 17 juin 2007 à 14:22
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/27454-savoir-si-connecte-au-net-en-4-ligne-avec-winsock

cs_ra3d Messages postés 3 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 3 juillet 2007
17 juin 2007 à 14:22
salut,j'ai une carte satelite ce code affiche l'adress de cette carte 192.168.238.238
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
2 déc. 2004 à 15:54
ok tout a fait
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
2 déc. 2004 à 11:14
pour JulioDelphi, moi aussi je pensais le sujet clos sur cette API.

ton cas est similaire a une connexion ADSL directe, moi je te parle d'un reseau avec PROXY, ou la, a chaque acces a internet une fenetre de connexion au proxy est demandée (equivaut a une demande comme par modem).
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
2 déc. 2004 à 10:47
chasseurdedemon : les insultes tu te les garde, ce que tu dis a deja été dit plus haut et saus fautes d'orthographe. ton post ne vaux rien.

thierry : je suis connecté a un reseau, branché sur le switch, et le routeur qui chope la connexion au net est branché sur le switch aussi et partage la connexion. et donc en aucun cas je n'ai d'ouverture de fenetre de demande de connexion :(

il est clair que ce n'est pas simple de savoitr si on est connecté, mais je pensais le sujet clos !
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
2 déc. 2004 à 10:29
chasseurdedemon :

avant de poster un commentaire assure toi de sa validité.
fait un test tout simple, met un modem sur ton PC avec un acces vers un FAI, tu verra que si tu lance IE et que tu n'est pas connecté, tu aura une demande de connexion a Internet.
idem si tu passe par un proxy si tu es sur un LAN.
ce que tu dis n'est valable que dans un cas: une connexion directe a ton PC genre ADSL.

ceci dit tu est hors sujet puisque le probleme de depart est de detecter si on est ou pas connecté a internet.


PS: pas de mot vulgaire, pas de language SMS c'est mieux
chasseurdedemon Messages postés 60 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 15 novembre 2010
1 déc. 2004 à 19:22
vous dites ke d connerie,
si tu ouvre une page internet et ke le net fonction et bien ^m si tu ferme tt les fenetre internet ton pc reste connecter au net c pa parce que vous ne l'utiliser pas k'il né pa connecter vous etes con ou koi ton pc vas pa passer sa journé a ce connecter au net des que tu ouvre une fenetre et ce deconnecter d ke tu la ferme c complétement idio ce ke vous dissez et cela ^m kan vous avez internet par un reseau local il reste connecter que t fenetre sont ouvert ou pas jusqu'a ce qu'a ce que vous éteigner votre pc
pepekiss Messages postés 19 Date d'inscription samedi 17 avril 2004 Statut Membre Dernière intervention 14 février 2005
10 nov. 2004 à 18:31
En gros, aucune façon d'être sûre à 100% de l'état de la connexion. Ce qui peut être handicapant pour certaines sources. (Merci à ceux qui ont remonté ma note)
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
10 nov. 2004 à 18:25
JulioDelphi > merci de ta réponse, mais au fait ma question s'adressait essentiellement aux personnes ayant justement cette boite. Car je sais bien entendu que cette boite n'apparait dans le cas d'une connexion permanente...
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
10 nov. 2004 à 18:20
non elle n'apparait pas, je suis aussi sur une connexion permanente sans boite de dialogue, pour moi ça marcherais mais pas pour les personnes avec modem a connecter manuellement, avec cette "foutue" boite :D
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
10 nov. 2004 à 18:15
Simple question à l'assemblée :

ayant une connexion permanente, je n'ai jamais de boîte de dialogue demandant une connexion (ce qui apparement pose problème ici). Si l'on exécute la commande PING dans une invite de commande, cette boîte apparaît-elle ?
cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
10 nov. 2004 à 18:10
merci fiduce, enfin quelqu'un d'accord avec moi...
cs_fiduce Messages postés 3 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 novembre 2004
10 nov. 2004 à 17:55
Désolé, jcq avait déjà dit la même chose ...
cs_fiduce Messages postés 3 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 novembre 2004
10 nov. 2004 à 17:38
Ok, je ne suis d'accord avec personne :

1) d'abord parce qu'une connexion internet ne va pas forcément de pair avec une fenêtre de browser ouverte (les pagers genre AIM, ICQ ou messenger utilisent internet aussi, par exemple ... les P2P, etc).

2) ensuite parce qu'il n'y a rien de plus chiant (pour un utilisateur) que de voir 5 fois par minute sa fenêtre de connexion s'afficher ("Voulez vous démarrer une connexion internet ?"), ce qui arrive immanquablement à chaque fois qu'un soft essaye de se connecter à une adresse de serveur du web. Quand l'utilisateur ne veut pas se connecter, il faut respecter son souhait (même s'il a de quoi se connecter). Donc, toutes les solutions "actives" me paraissent mauvaises (de type "j'essaye de me connecter en TCP sur le port 80 d'un serveur, je verrai bien si ça marche"). Reste à voir si un simple ping déclenche aussi l'outil de connexion automatique ... (un ping étant, à un niveau donné, une tentative de connexion).
A mon avis, le meilleurs code est celui qui ne réveillerait même pas un firewall ...
e_NeX Messages postés 104 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 30 novembre 2009
10 nov. 2004 à 14:29
porthierrydelepine,

qand tu te connecte au serveur, apres il faut que tu envoie une requette a ce serveur pour qu'il te renvoie la pages desiree que tu request! mais ce n'est pas ce que l'on veux faire: on veux juste se connecter et se deconnecter sans dialoguer avec ce serveur et comme Neo.balastik l'a dit: TESTER plusieurs serveurs serait plus precis! personellement, je prendrait un serveur qui donne l'heure exate (a mon avis ils ne doivent quasiment jamais etre en panne!)
pour econs,
evidemment : quand tu branche ta machine a ton routeur, ce dernier t'assigne une IP (qui est privee) meme si ton hub n'est pas branche sur ton modem!

ps: je ne suis pas d'accord avec jcq
cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
10 nov. 2004 à 10:05
Il n'y a aucune méthode fiable pour tester si le poste est connecté à internet. Car même en effectuant un ou plusieurs pings, ça lancera la procédure de connexion à internet... Donc vraiment pas bon.
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
10 nov. 2004 à 09:21
Cette méthode est réellement trop limitée pour être convaincante.

Elle ne peut être retenue comme une façon efficace. Il existe trop de cas de figure où cette source trouve ses limites (Proxy, Routeur,...). Le cas le plus extrême: et si mon fiston s'amuse à retirer le cable RJ45 de ma machine... J'ai tjs mon IP qui m'a été attribuée par mon FAI (si je suis en direct), mais suis-je encore sur le net ? Et non ! Cela pourra être critique pour une application que l'on développerait.
La façon la plus sure selon moi est d'interroger un serveur lequel nous sommes (quasi) certains qu'il répondra. Mais c'est vrai, nous sommes dès lors dépendant de ce serveur. Mais rien n'exclu qu'en cas de non réponse d'un serveur, nous en testions d'autres.
Une dizaine par exemple (serveurs très courants). Si aucune réponse de ces 10 serveurs, la probabilité que nous ne soyons pas sur le net est maximale.
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
10 nov. 2004 à 03:13
Yep, marche pas. je suis sur un réseau local, et il me donne mon IP sur le réseau, mais rien à voir avec la connection Internet.
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
9 nov. 2004 à 22:24
un autre solution plus propre encore que le ping( j'y ai pensé apres),
c'est de faire une resolution de nom sur l'adresse www.microsoft.com et si elle se fait c'est que nous sommes bien sur internet car dans ce cas c'est le serveur DNS du provider internet qui nous repond.
je persiste a dire que ca reste de la bidouille car, il me semble que si on demande un ping ou un test sur le port 80 d'une page web, ou une resolution de noms, le pc, si il ne trouve pas en local ce qu'il veut, va demander une connexion internet.
Donc c'est pas cool si a chaque fois qu'un prog verifie la connexion, l'utilisateur se mange une fenetre de demande de connexion a internet si il est hors ligne.
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
9 nov. 2004 à 22:14
hello

1) Fenetre internet ouverte ou pas : aucun rapport avec la connexion
2) 127.0.0.1 n'est effectivement pas une reference
3) Si je suis en LAN et que mon cable est bien relié a un(plus) autre(s) pc(s), mon ip sera par exemple : 192.168.0.5, ce qui ne veut pas dire que je suis connecté a internet.
4) la solution du ping ou de choper une page web est effectivement barbare mais je regrette : est la meilleure !!

Pour les personnes ayant une connexion via un modem (avec un seul pc), il se peut que vous trouviez un code qui vous donne : votre IP locale (192.168.xxx.xxx) et votre IP internet. Elles seront ttes les deux diffrentes.
Vous vous direz : "oui ! j'ai trouvé ! si j'ai deux ip diffrenete alors je suis connecté au net !"
je vous arrete tout de suite : c faux ! cela ne marchera QUE sur un réseau monoposte !!!

Si vous vous trouvez derriere un routeur, le routeur LUI est connecté au net, mais vous, vous etes connecté au routeur, il vous redistribue (via un switch/hub) votre bande passante. Résultat : vous trouverez grace a votre prog deux adresse IP identique. et pourtant vous serz sur le net.

Je repete donc ke la solution de bidouille du ping ou de la page web chopée est la meilleure

voila :) bonne prog
e_NeX Messages postés 104 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 30 novembre 2009
9 nov. 2004 à 21:01
pour thierrydelepine pas besion d'un ping juste un connection a un server de Krosoft (toujours pas example) sutr le port 80 (evidemment) et si ta connection est acceptee : connecte = true
si ta reponse est Hos unreacheable ou autrechose dans le style unknow host : connection = false
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
9 nov. 2004 à 20:50
Pour e_NeX,

Tu as raison c'est une solution simple a mettre en oeuvre pour tester si un PC est bien relié a internet.

Un principe est de faire par exemple un ping vers un ou deux serveurs toujours présent sur le net ( et qui accepte le ping ) afin de verifier que l'on est bien connecté a internet.

Mais ce n'est pas le top quand même, cela reste de bidouille et si les serveurs disparraissent du net bye bye le test de connexion Internet.
e_NeX Messages postés 104 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 30 novembre 2009
9 nov. 2004 à 20:35
je suis desole pepekiss mais thierrydelepin a raison:

ta juste besion d'un routeur (par example) pour qu'il tassigne une IP

la chos ce searit dessayer de se connecter a un servver toujour actif!
pepekiss Messages postés 19 Date d'inscription samedi 17 avril 2004 Statut Membre Dernière intervention 14 février 2005
9 nov. 2004 à 19:27
Mais ne peut-on pas être connecté sans pour autant ne pas avoir de fenêtre ouvertes?
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
9 nov. 2004 à 17:55
Desole legion91 mais ce code via l'API InetIsOffline je l'avais deja testé et c'est le meme resultat qu'avec le code de pepekiss, tu detecte seulement si tu as un adaptateur actif sur la machine.

si ton PC est relié a internet par carte reseau via un proxy le resultat est faux, il renverra toujours vous etes connecté a internet meme si tu n'as aucune fenetre ouverte sur le PC.
cs_legion91 Messages postés 216 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 15 décembre 2010
9 nov. 2004 à 17:47
J'allais oublier:

Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As Long

MsgBox "Etes vous connecté a internet? " + CStr(CBool(Not (InetIsOffline(0)))), vbInformation

Sa fait deux lignes lol
cs_legion91 Messages postés 216 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 15 décembre 2010
9 nov. 2004 à 17:45
1er) 127.0.0.1 n'est pas forcement l'ip reseaux par default
2°) sa deja ete dit plein de fois et surtout là, c'est du foutage de gueule.

3°) Je prefere cette solution par API:

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

4°) Ou encore, mais il me semble que sa marche pas chez tt le monde:
Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As Long

Private Sub Form_Load()
MsgBox "Etes vous connecté a internet? " + CStr(CBool(Not (InetIsOffline(0)))), vbInformation
End Sub
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
9 nov. 2004 à 17:44
Pour te faire plaisir je viens de faire les test et il me dit "vous etes connecté au net ..." .

ERREUR, toutes mes fenetres Internet Explorer etait fermées, je n'etait pas connecté a internet.

je suis sur un reseau et donc ton code a testé que j'avais un adaptateur actif sur le reseau ( ca c'est exact) mais je n'etais pas connecté a internet donc tu as tout faux.

si tu veux faire un test c'est tres simple met une crate reseau dans un micro configure ces propriétés reseaux et branche le sur un HUB tu verra ton code dira que tu es conencté a Internet alors que ce n'est pas vrai
pepekiss Messages postés 19 Date d'inscription samedi 17 avril 2004 Statut Membre Dernière intervention 14 février 2005
9 nov. 2004 à 17:37
As-tu essayé cette source? Cela ne définit pas seulement l'adaptateur reseau. Cela dit réellement si on est connecté ou non au net. Essaie la dans tous les cas de figures, et tu verras
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
9 nov. 2004 à 17:16
je ne suis pas d'accord,
avec ton code tu ne sais pas si tu est connecté au net.

tu sais juste qu'un adapteur reseau est actif et a une adresse IP (Carte reseau, acces distant, ...).

donc au lieu de "Vous êtes connecté au net, votre ip est : " j'aurai mis "vous avez au moins un adaptateur reseau actif configuré avec l'adresse IP :"

la vrai detection d'une connexion internet est beaucoup plus compliquée.

je ne conseil donc pas l'utilisation de ce code pour tester une connexion internet, ceci dit si ce code est pour toi et que pour toi et que ton appli ne tournera pas sur aucun autre PC alors c'est utilisable mais pas si tu dois diffuser ton prog sur d'autres ordinateurs
Rejoignez-nous