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
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.