Petit logiciel permettant de surveiller une liaison adsl

Description

Par ping sur divers sites supposés répondre selon le principe suivant :
le premier est pingué, s'il répond pas de problème
sinon le second est pingué, si répond pas de problème
sinon le troisième est pingué, s'il répond pas de probleme
si le troisieme lui aussi ne répond pas, on considére que l'ADSL est coupé, une message de déconnection est écrit dans un fichier appelé test.txt : il commence par D (comme déconnection!) et contient la date et l'heure du constats
le programme continue. Lorsque la connection est rétablie, un message est écrit dans le fichier test. Il commence par C (comme connection!) et contient l'heure ..
Ce programme peut tourner perpétuellement ..
Au début il vérifie si test.txt existe et si oui en fait une sauvegarde avant de le remettre à zéro et de commencer à l'utiliser. Le premier message donne les adresses à pinguer (données en paramètre) et l'heure de lancement.
Voilà bon usage!!

Source / Exemple :


Imports System
Imports System.Threading
Module pingctrlerreur
    Sub Main(ByVal cmdArgs() As String)
        Dim millisecondsTimeout As Integer
        Dim Connecte As Boolean
        Dim nouveaunom, vrainouveaunom As String
        Dim AdressesPing(3) As String
        Dim IpAddr, Codret As String
        Dim Ping As New Net.NetworkInformation.Ping
        Dim PingReply As Net.NetworkInformation.PingReply
        millisecondsTimeout = 30000
        Connecte = False
        If My.Computer.FileSystem.FileExists("test.txt") Then
            nouveaunom = "C" & DateString & TimeString & ".txt"
            vrainouveaunom = Replace(nouveaunom, ":", "")
            My.Computer.FileSystem.RenameFile("test.txt", vrainouveaunom)
        End If
        If cmdArgs.Length > 0 Then
            For argNum As Integer = 0 To UBound(cmdArgs, 1)
                AdressesPing(argNum) = cmdArgs(argNum)
            Next argNum
        Else
            AdressesPing(0) = "194.2.0.50"
            AdressesPing(1) = "82.122.13.170"
            AdressesPing(2) = "193.253.160.3"
        End If
        My.Computer.FileSystem.WriteAllText("C:test.txt", _
        "PING sur " & AdressesPing(0) & " " & AdressesPing(1) & " " & AdressesPing(2) & " " & " le " & DateString & " " & " à " & TimeString & Chr(13), True)
        While True
            Try
                ' On envoit la requete du ping
                IpAddr = AdressesPing(0)
                PingReply = Ping.Send(IpAddr)
                ' Test du code retour du Ping
                If PingReply.Status <> Net.NetworkInformation.IPStatus.Success Then
                    CodRet = PingReply.Status.ToString
                    Throw New Net.NetworkInformation.NetworkInformationException(9999)
                End If
                ' si la connection est déjà connue, on ne fait rien sinon on la note dans le fichier
                If Not Connecte Then
                    Connecte = True
                    My.Computer.FileSystem.WriteAllText("C:test.txt", "C" & "," & "1," & AdressesPing(0) & "," & DateString & "," & TimeString & Chr(13), True)
                End If
            Catch ex As Exception
                ' En cas d'erreur ping deuxieme IP
                Try
                    ' On envoit la requete du ping
                    IpAddr = AdressesPing(1)
                    PingReply = Ping.Send(IpAddr)
                    If PingReply.Status <> Net.NetworkInformation.IPStatus.Success Then
                        Throw New Net.NetworkInformation.NetworkInformationException(9999)
                    End If
                    ' On affiche le résultat du ping
                    ' tant que ça marche, on ne fait rien
                    ' si le ping ne marche pas le catch ex as exception doit prendre le controle
                Catch ex1 As Exception
                    ' En cas d'erreur sur deuxieme IP ping troisieme IP
                    Try
                        ' On envoit la requete du ping
                        IpAddr = AdressesPing(2)
                        PingReply = Ping.Send(IpAddr)
                        If PingReply.Status <> Net.NetworkInformation.IPStatus.Success Then
                            Throw New Net.NetworkInformation.NetworkInformationException(9999)
                        End If
                        ' On affiche le résultat du ping
                        ' tant que ça marche, on ne fait rien
                        ' si le ping ne marche pas le catch ex as exception doit prendre le controle
                    Catch ex2 As Exception
                        ' En cas d'erreur sur la troisième IP : 
                        ' si la deconnection est déjà connue on ne fait rien sinon 
                        ' on écrit la deconnection dans le fichier
                        ' et on note la déconnection
                        If Connecte Then
                            Connecte = False
                            My.Computer.FileSystem.WriteAllText("C:test.txt", "D" & "," & "1," & AdressesPing(0) & "," & DateString & "," & TimeString & " " & "Code Retour = " & Codret & " " & Chr(13), True)
                        End If
                    End Try
                End Try
            End Try

            ' Pause de 15 seconde entre chaque ping
            System.Threading.Thread.Sleep(30000)
        End While
    End Sub

End Module

Conclusion :


en position de force pour discuter de la qualité de votre liaison avec un forunisseur

Codes Sources

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.