Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment tester si la connexion Internet est active ?

4 réponses
Avatar
Bull
Bonjour,

J'ai une appli qui va chercher des infos dans des fichiers xml hébergés sur
des serveur web (en gros, un lecteur rss si ça vous dit quelque chose).

Avant chaque mise à jour de mes flux rss (donc avant d'aller chercher
l'infos dans les fameux fichiers xml), je teste si la connexion est active.
Pour l'instant, je procède en faisant un ping de google comme cela :

Try

Dim hwebrequest As System.Net.WebRequest =
System.Net.WebRequest.Create(http://www.google.fr)

Dim hwebresponse As System.Net.WebResponse = hwebrequest.GetResponse

connected = True

Catch ex As Exception

connected = False

StatusBar1.Text = "Connection failure, please verify that your Internet
connection is open"

End Try


Le problème, c'est qu'il semble que google mette de plus en plus de temps à
répondre au ping ce qui paralyse complètement mon application pendant de
longues secondes.

Quelqu'un connait-il donc un autre moyen de tester si une connexion Internet
est active ?

Mille mercis d'avance,
Bull

4 réponses

Avatar
Pyroa
le ping est une bonne manière de tster la conenction sinon tu peux tenter de
télécharger une page web et si une exceptio nest déclenché tu n'est pas
connecté ...
"Bull" a écrit dans le message de
news:
Bonjour,

J'ai une appli qui va chercher des infos dans des fichiers xml hébergés


sur
des serveur web (en gros, un lecteur rss si ça vous dit quelque chose).

Avant chaque mise à jour de mes flux rss (donc avant d'aller chercher
l'infos dans les fameux fichiers xml), je teste si la connexion est


active.
Pour l'instant, je procède en faisant un ping de google comme cela :

Try

Dim hwebrequest As System.Net.WebRequest > System.Net.WebRequest.Create(http://www.google.fr)

Dim hwebresponse As System.Net.WebResponse = hwebrequest.GetResponse

connected = True

Catch ex As Exception

connected = False

StatusBar1.Text = "Connection failure, please verify that your Internet
connection is open"

End Try


Le problème, c'est qu'il semble que google mette de plus en plus de temps


à
répondre au ping ce qui paralyse complètement mon application pendant de
longues secondes.

Quelqu'un connait-il donc un autre moyen de tester si une connexion


Internet
est active ?

Mille mercis d'avance,
Bull




Avatar
Zoury
Salut Bull! :O)

essai ce code :
'***
' CNetworkManagement.vb
Imports System
Imports System.Runtime.InteropServices

Public Class NetworkManagement

<DllImport("wininet", SetLastError:=True)> _
Private Shared Function InternetGetConnectedState _
( _
ByRef dwFlags As Int32, _
ByVal dwReserved As Int32 _
) As Boolean
'
End Function

Public Shared Function IsOnline() As Boolean
Return InternetGetConnectedState(0, 0)
End Function

Public Shared Function GetConnectionMode() As InternetConnectionMode

Dim iFlag As Int32
Dim sEnumNames() As String
Dim arEnumValues As Array
Dim t As Type
Dim i As Int32

If (InternetGetConnectedState(iFlag, 0)) Then
t = InternetConnectionMode.Modem.GetType()
sEnumNames = [Enum].GetNames(t)
arEnumValues = [Enum].GetValues(t)
For i = 0 To sEnumNames.Length - 1
If (iFlag And CType(arEnumValues.GetValue(i), String)) Then
' on a trouvé une connection
Return [Enum].Parse(t, sEnumNames(i))
End If
Next i
End If

' aucune connection ...
Return InternetConnectionMode.None

End Function

End Class
'***
'***
' EInternetConnectionMode.vb
Public Enum InternetConnectionMode As Integer
None = &H0
Modem = &H1 ' INTERNET_CONNECTION_MODEM
Lan = &H2 ' INTERNET_CONNECTION_LAN
Proxy = &H3 ' INTERNET_CONNECTION_PROXY
End Enum
'***

Exemple :
'***
Module Module1

Sub Main()
' test la connection
Console.WriteLine( _
"NetworkManagement.IsOnline() : " & _
NetworkManagement.IsOnline().ToString())
' test le type...
Console.WriteLine( _
"NetworkManagement.GetConnectionMode() : " & _
NetworkManagement.GetConnectionMode().ToString())
Console.WriteLine()
Console.WriteLine("Appuyer sur Retour pour quitter ...")
Console.ReadLine()
End Sub

End Module
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Bull
Salut Youry :-)

Ca a l'air de marcher impec à première vue. Coollllllllllllll !

Merci bcp !!!

@+
Bull

"Zoury" a écrit dans le message de
news:
Salut Bull! :O)

essai ce code :
'***
' CNetworkManagement.vb
Imports System
Imports System.Runtime.InteropServices

Public Class NetworkManagement

<DllImport("wininet", SetLastError:=True)> _
Private Shared Function InternetGetConnectedState _
( _
ByRef dwFlags As Int32, _
ByVal dwReserved As Int32 _
) As Boolean
'
End Function

Public Shared Function IsOnline() As Boolean
Return InternetGetConnectedState(0, 0)
End Function

Public Shared Function GetConnectionMode() As InternetConnectionMode

Dim iFlag As Int32
Dim sEnumNames() As String
Dim arEnumValues As Array
Dim t As Type
Dim i As Int32

If (InternetGetConnectedState(iFlag, 0)) Then
t = InternetConnectionMode.Modem.GetType()
sEnumNames = [Enum].GetNames(t)
arEnumValues = [Enum].GetValues(t)
For i = 0 To sEnumNames.Length - 1
If (iFlag And CType(arEnumValues.GetValue(i), String))


Then
' on a trouvé une connection
Return [Enum].Parse(t, sEnumNames(i))
End If
Next i
End If

' aucune connection ...
Return InternetConnectionMode.None

End Function

End Class
'***
'***
' EInternetConnectionMode.vb
Public Enum InternetConnectionMode As Integer
None = &H0
Modem = &H1 ' INTERNET_CONNECTION_MODEM
Lan = &H2 ' INTERNET_CONNECTION_LAN
Proxy = &H3 ' INTERNET_CONNECTION_PROXY
End Enum
'***

Exemple :
'***
Module Module1

Sub Main()
' test la connection
Console.WriteLine( _
"NetworkManagement.IsOnline() : " & _
NetworkManagement.IsOnline().ToString())
' test le type...
Console.WriteLine( _
"NetworkManagement.GetConnectionMode() : " & _
NetworkManagement.GetConnectionMode().ToString())
Console.WriteLine()
Console.WriteLine("Appuyer sur Retour pour quitter ...")
Console.ReadLine()
End Sub

End Module
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/




Avatar
Pierre Alexis [MVP]
Salut Bull,

Tu as écrit :

J'ai une appli qui va chercher des infos dans des fichiers xml hébergés sur
des serveur web (en gros, un lecteur rss si ça vous dit quelque chose).

Avant chaque mise à jour de mes flux rss (donc avant d'aller chercher
l'infos dans les fameux fichiers xml), je teste si la connexion est active.
Pour l'instant, je procède en faisant un ping de google comme cela :



Pourquoi ne pas simplement essayer de se connecter et puis si ça marche pas tu
catches l'erreur ?

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/