Test Internet

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Test Internet

Message par SPH »

Salut la team,

je viens de m'apercevoir que le code ci dessous n'indique pas que l'on est connecté sur internet (or, c'est ce que je cherche) :

Code : Tout sélectionner

If InitNetwork()
  email=1
Else
  email=0
EndIf

If email=0
  MessageRequester("Erreur","Vous n'etes pas connecté à internet")
  End
EndIf
Avez-vous une routine me permettant de le savoir ?

Thx 8)
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Test Internet

Message par Ar-S »

Tu essayes simplement de télécharger quelque chose.. si ça marche c'est ok sinon.. bah c'est pas ok.

J'ai une page qui affiche son IP distant. Elle ne contient que ip=*xxxxxxxx*
Dans cette exemple, je la telech en mémoire et je vérifie si le mot IP est présent.

Code : Tout sélectionner

InitNetwork()
*Buffer = ReceiveHTTPMemory("http://arsworld.free.fr/ip.php")
  If *Buffer
    Taille = MemorySize(*Buffer)
    TEST$ = PeekS(*Buffer, Taille, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*Buffer)
    If FindString(TEST$,"ip")
      Debug "Connexion OK"
    EndIf
   
  Else
    Debug "Le téléchargement a échoué"
  EndIf
  
y'a peut être plus simple mais j'ai pas envie de couper mon net pour tester.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: Test Internet

Message par SPH »

Une question plus pertinente et qui m'aidera plus :
Peut on etre connecté a internet et avoir un echec de :

Code : Tout sélectionner

InitNetwork()
:?: 8O
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Test Internet

Message par Marc56 »

Je penses que cette fonction ne sert qu'à charger la lib des fonctions réseau (comme usePNG etc)
Elle ne fait aucun test réseau.
:)
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Test Internet

Message par cage »

Je me demande si elle ne fait pas un test de la pile réseau pour savoir si le réseau est installé ?

Dans le cas contraire, pas de réseau disponible.

Ce qui peut arriver en cas de "Safe Boot" sans réseau par exemple.

Ou on a désinstallé les drivers réseaux.
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Test Internet

Message par Marc56 »

Peut-être pour la pile, mais pour la connexion, je viens de tester: en désactivant la carte InitNetwork() retourne toujours une valeur autre que zéro, donc il ne teste pas la connexion.

:wink:
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Test Internet

Message par cage »

Pas de test de la connexion, ça c'est sur.

Si je débranche mon câble RJ45, InitNetwork() ne bronche pas.

Je pense qu'il faut tester un élément qui soit en dehors de chez soi ou de l'entreprise.

Cet élément doit être le plus stable possible (on 24/24)
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Test Internet

Message par Marc56 »

La nouvelle fonction HTTPRequest() (PB >5.70) est ce qui permet la réponse la plus rapide.

Effectivement, interroger un site qui a peu de chance d'être down.

Code : Tout sélectionner

InitNetwork()

HttpRequest = HTTPRequest(#PB_HTTP_Get, "https://www.google.com")

If HttpRequest
    Debug "Connexion Internet OK :-)"
    FinishHTTP(HTTPRequest)
Else
    Debug "Connexion Internet KO :-("
EndIf
À une autre époque on aurait utilisé un Ping, mais de plus en plus de sites bloquent ICMP

:wink:
Christophe
Messages : 43
Inscription : lun. 22/oct./2018 19:34
Localisation : Haisnes (62)

Re: Test Internet

Message par Christophe »

Une autre methode encore plus courte PB < 5.70

Code : Tout sélectionner

If InternetGetConnectedState_(0,0) = #True
  Debug "Connecté"
Else
  Debug "Non connecté"
EndIf
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Test Internet

Message par cage »

Effectivement ce serait plus rapide, mais comme dit Microsoft
A return value of TRUE from InternetGetConnectedState indicates that at least one connection to the Internet is available. It does not guarantee that a connection to a specific host can be established.
Voir: ici
Voici ce a quoi j'arrive après réflexion sur le sujet
La commande ipconfig /all retourne suffisamment d'informations que l'on peut traiter.
Si au moins une connexion est active, on doit avoir au minimum
une adresse IP DHCP (si non désactivé ==> adresse IP fixe)
une adresse IP DNS (c'est le minimum pour communiquer avec le monde)
La plupart du temps, DHCP et DNS sont donnés par l'entreprise ou son routeur a la maison.
On peut donc les tester

Code : Tout sélectionner

EnableExplicit

Define a$ = Chr(34)
Define param$ = "/c ipconfig.exe /all | findstr /i /c:"+a$+"serveur"+a$+" /c:"+a$+"server"+a$+" 2>&1|clip"

Define rc = RunProgram("cmd.exe",param$,#Null$,#PB_Program_Wait|#PB_Program_Hide)
If rc
  Define entry$ = GetClipboardText() : ClearClipboard()  : Debug entry$
  Define count = CountString(entry$, #CRLF$)             : Debug "count="+count
  If count > 0
    Define n, line$, DNS$, DHCP$
    For n = 1 To count
      line$ = StringField(entry$, n, #CRLF$)     ;: Debug Trim(line$)
      If FindString(line$,"DNS",1,#PB_String_NoCase)
        DNS$  = Trim(StringField(line$, 2, ":"))  : Debug "DNS="+DNS$
      EndIf
      If FindString(line$,"DHCP",1,#PB_String_NoCase)
        DHCP$ = Trim(StringField(line$, 2, ":"))  : Debug "DHCP="+DHCP$
      EndIf
    Next
  EndIf
EndIf
Reste a implémenter le test que l'on veut.
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: Test Internet

Message par SPH »

Christophe a écrit :Une autre methode encore plus courte PB < 5.70

Code : Tout sélectionner

If InternetGetConnectedState_(0,0) = #True
  Debug "Connecté"
Else
  Debug "Non connecté"
EndIf
Je suis en 5.11 pour mon jeu 8)
Mais merci pour l'info :idea:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Christophe
Messages : 43
Inscription : lun. 22/oct./2018 19:34
Localisation : Haisnes (62)

Re: Test Internet

Message par Christophe »

Je suis en 5.11 pour mon jeu 8)
Mais merci pour l'info :idea:
Comme c'est une API ça fonctionnera avec ton 5.11, mais comme le dit cage cela testera si ta connexion est active mais pas si ta connexion à une adresse spécifique puisse être établie.
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Test Internet

Message par cage »

Autre piste

Code : Tout sélectionner

InitNetwork()
  If ExamineIPAddresses()
    Repeat
      IP = NextIPAddress()
      If IP ; <--- au moins une interface est paramétrée et possède une adresse IP
        Debug "IPv4: " + IPString(IP) 
      EndIf
    Until IP = 0
  EndIf
End
Exemple de la documentation PB
On vérifie qu'au moins une interface est paramétrée et possède une adresse IP
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Test Internet

Message par Ar-S »

@cage. Mais si on est en reseau (sur un routeur), on peut très bien avoir de l'ip locale.
Ou même s'il ping 127.0.0.1 par exemple, ça sera valide non ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Test Internet

Message par cage »

@cage. Mais si on est en reseau (sur un routeur), on peut très bien avoir de l'ip locale.
Exact.
C'est mon cas comme beaucoup je pense (surtout pour du jeux)
J'ai une adresse en 192.168.0.x qui m'est donnée par ma Freebox en mode routeur.
Je n'obtiens cette adresse que si ma Box est sous tension et que la liaison FO dans mon cas a passée toutes les étapes.
Je suis donc bien connecté a 'Internet'.
Si ma box reste dans un état intermédiaire, pas d'IP et pas de connexion internet.
Par contre, l'interface du PC est Up (RJ45)

L'adresse IP 127.0.0.1 est l'adresse de l'interface Loopback et elle répond toujours au Ping même si la pile réseau est HS.
Donc le fait que cette adresse IP réponde au Ping ne signifie pas grand chose.

Qu'on soit a la maison ou en entreprise, il faudrait s'assurer qu'au moins l'adresse IP externe réponde au Ping
Il existe plusieurs URL qui permettent de connaitre son adresse IP externe, mais en entreprise, cela peut être filtré.
Dans mon ancienne entreprise, Renault pour ne pas la citer, je connaissais cette adresse car elle était publique.
Je connaissais aussi les DNS (internes) ce qui permettait de savoir que la partie LAN/WAN fonctionnait.
Pour internet, une connexion Web indiquait si s'était bon, sauf que si les Proxies dysfonctionnaient, pas d'internet.
Bref, la question posée par SPH est plus complexe qu'il n'y parait.
Cela demande un peu de réflexion, mais là il est tard.
Bonne nuit a tous.
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Répondre