Tester une connection internet - ping

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

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.