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