Tester une connection internet - ping

Soyez le premier à donner votre avis sur cette source.

Snippet vu 48 757 fois - Téléchargée 35 fois

Contenu du snippet

Pour tester une connection internet, on peut pinger une adresse du Net, telle que google.fr
Cette classe .Net permet de gerer tout ca simplement, meme si ce n'est pas trop rapide

Appel de la classe (par thread, c'est beaucoup mieux !):
Dim classePing As PingOK = New PingOK
classePing.AdresseIp = "adresse a pinger comme www.google.fr"
Dim monProcess As New System.Threading.Thread(AddressOf classePing.LancePing)
monProcess.Start()
monProcess.Join()
Application.DoEvents()

Verification :
if classePing.IsConnected then ...

Source / Exemple :


'Classe Ping Capuccino_fr

'Appel : 
'   Dim NomProc As PingOK = New PingOK
'   NomProc.AdresseIp = "adresse a pinger" 'exemple : www.google.fr
'   
'   Dim monProcess As New System.Threading.Thread(AddressOf tmp.LancePing)
'   monProcess.Start()
'   monProcess.Join()
'  
'
'Verification :
'   NomProc.IsConnected = "True" ou "False" 'correspond à la réponse du ping
'   if NomProc.IsConnected then ...

Imports System.IO

Public Class PingOK
#Region " Propriétés"

    Private _AdresseIP As String
    Private _IsConnected As Boolean
    Public Property AdresseIp()
        Get
            Return _AdresseIP
        End Get
        Set(ByVal Value)
            _AdresseIP = Value
        End Set
    End Property
    Public ReadOnly Property IsConnected()
        Get
            Return ConnecteAInternet()
        End Get
    End Property
#End Region
#Region " Fonctions"
    Public Sub LancePing()
        If _AdresseIP = "" Then
            MsgBox("Aucune adresse IP decidee" & vbCrLf & "Par défaut, nous prendrons www.google.fr", MsgBoxStyle.OKOnly)
            _AdresseIP = "www.google.fr"
        End If
        Try
            'If Dir("c:\testPing.txt") <> "" Then
            '    File.Delete("c:\testPing.txt")
            'End If
            Dim tmp As FileStream = File.Create("c:\testping.txt")
            tmp.Close()
            Wait(5)
            Shell(Environment.GetEnvironmentVariable("comspec") & " /c ping " & _AdresseIP & " > c:\testping.txt", AppWinStyle.Hide)
            Wait(6000)
        Catch ex As Exception
            MsgBox("Erreur dans la connection à Internet (Au lancement du ping) : " & vbCrLf & ex.Message)
        End Try
    End Sub
    Public Function ConnecteAInternet() As Boolean
        Dim buffer As String
        Dim canal As Integer = FreeFile()
        Dim testsPing As Integer = 0
        Try
ouverture:  testsPing += 1
            If File.Exists("c:\testping.txt") Then
                Wait(testsPing * 100)
                FileOpen(canal, "c:\testping.txt", OpenMode.Input)
                Wait(5)
            Else
                LancePing()
                GoTo ouverture
            End If
        Catch ex As Exception
            If testsPing < 5 Then
                GoTo ouverture
            Else
                MsgBox("Impossible de se connecter au serveur (Apres Ping, lors du test de connexion)." & vbCrLf & ex.Message, MsgBoxStyle.OKOnly)
                Exit Function
            End If
        End Try

        Do While Not EOF(canal)
            buffer = LineInput(canal)
            If InStr(buffer, "ponse de") Then
                _IsConnected = True
                FileClose(canal)
                GoTo retour
            End If
        Loop
        FileClose(canal)
        File.Delete("c:\testping.txt")
        _IsConnected = False
retour: Return _IsConnected
    End Function
    Public Sub Wait(ByVal n As Integer)
        For i As Integer = 1 To n
            System.Threading.Thread.Sleep(1)
            Application.DoEvents()
        Next
    End Sub
#End Region
End Class

Conclusion :


Finalement, la solution d'ouverture d'une socket est BEAUCOUP plus rapide, donc voici le tout petit bout de code qui permet de savoir si on est connecté:

'ouverture d'une socket sur le port 21 au serveur FTP
Try
Dim client As New System.Net.Sockets.TcpClient("adresse_du_serveur_ftp", 21)
Catch e As System.Net.Sockets.SocketException
MsgBox("Impossible de se connecter : " & vbCrLf & e.Message)
End Try

A voir également

Ajouter un commentaire

Commentaires

medgaza
Messages postés
1
Date d'inscription
lundi 13 août 2007
Statut
Membre
Dernière intervention
24 août 2007
-
merci à tous le monde c'est justement ce qu'il me faut dans mon travail mais moi j'ai une serie de site web à pinger enregistrer dans un ficher .txt
capuccino_fr
Messages postés
113
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
11 février 2008
-
Si tu parles de l'appel de la fonction :
Dim monProcess As New System.Threading.Thread(AddressOf tmp.LancePing)

Mets plutot :
Dim monProcess As New System.Threading.Thread(AddressOf NomProc.LancePing)
capuccino_fr
Messages postés
113
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
11 février 2008
-
As-tu bien en haut de ta classe cette ligne : Imports System.IO ?
Il y a des chances que la ligne : Dim tmp As FileStream = File.Create("c:\testping.txt") ne soit pas reconnue dans ce cas
zn415
Messages postés
64
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
21 novembre 2015
-
J'obtiens "tmp" non déclaré lorsque j'utilise votre classe. Désolé si c'est évident,Je débute...
cs_Children
Messages postés
84
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
29 avril 2009
-
En faite moi j'ai remplacerà la ligne 51 Wait(6000)par wait (500), et ça va beaucoup plus vite! :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.