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 : Sélectionner tout - Visualiser dans une fenêtre à part
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