Pinger une liste d'IP. Quelle methode rapide ?
Bonjour je voudrais pinger une liste d'IP sur un reseau local.
J'y arrive avec la méthode suivante avec un BackgroundWorker mais le resultat est très lent (environ 50 secondes pour pinger 26 IP)
J'ai volontairement limité le ping à 4 ip cet exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Threading
Imports System.Text
Public Class pinger
Dim ping As New Ping
Dim rp(3) As PingReply
Private Sub NsButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NsButton1.Click
Try
BackgroundWorker1.RunWorkerAsync()
Label163.Text = "Test ping en cours, veuillez patienter..."
Catch ex As Exception
End Try
End Sub
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Try
rp(0) = ping.Send("10.252.0.29")
rp(1) = ping.Send("10.252.0.38")
rp(2) = ping.Send("10.252.0.39")
rp(3) = ping.Send("10.252.0.41")
Catch ex As Exception
End Try
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Label163.Text = "Test ping terminé."
If rp(0).Status = IPStatus.Success Then
Label1.Text = rp(0).RoundtripTime & " ms"
Label2.Text = "Connecté"
Label1.ForeColor = Color.Lime
Label2.ForeColor = Color.Lime
Else
Label1.Text = rp(0).RoundtripTime & " ms"
Label2.Text = "Déconnecté"
Label1.ForeColor = Color.Red
Label2.ForeColor = Color.Red
End If
If rp(1).Status = IPStatus.Success Then
Label4.Text = rp(1).RoundtripTime & " ms"
Label3.Text = "Connecté"
Label4.ForeColor = Color.Lime
Label3.ForeColor = Color.Lime
Else
Label4.Text = rp(1).RoundtripTime & " ms"
Label3.Text = "Déconnecté"
Label4.ForeColor = Color.Red
Label3.ForeColor = Color.Red
End If
If rp(2).Status = IPStatus.Success Then
Label6.Text = rp(2).RoundtripTime & " ms"
Label5.Text = "Connecté"
Label6.ForeColor = Color.Lime
Label5.ForeColor = Color.Lime
Else
Label6.Text = rp(2).RoundtripTime & " ms"
Label5.Text = "Déconnecté"
Label6.ForeColor = Color.Red
Label5.ForeColor = Color.Red
End If
If rp(3).Status = IPStatus.Success Then
Label8.Text = rp(3).RoundtripTime & " ms"
Label7.Text = "Connecté"
Label8.ForeColor = Color.Lime
Label7.ForeColor = Color.Lime
Else
Label8.Text = rp(3).RoundtripTime & " ms"
Label7.Text = "Déconnecté"
Label8.ForeColor = Color.Red
Label7.ForeColor = Color.Red
End If
End Sub
End Class |
Merci de votre aide