Visual Basic.NET - Ping multiples host (Funciona muy lento)

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 7 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ping multiples host (Funciona muy lento)

Publicado por German (5 intervenciones) el 22/01/2019 02:04:40
Hola gente, sigo con otra parte de un proyecto mientras resuelvo otra cosa.


Quiero hacer unos 25 ping a diferentes equipos, router ap etc
Probe un codigoque funciona de lujo con una maquina pero al aumentar la cantidad de equipos se tranca todo.
Tengo un i7 4990k con 32Gb de ram y no creo que el problema sea de recursos, estimo que el codigo queda esperando respuesta y no funciona hasta que termina.
Necesitaria que se ejecuten en paralelo o que no quede esperando respuesta. No se en realidad como solucionarlo pero se ma habia ocurrido eso. a continuacion les dejo el codigo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
If My.Computer.Network.Ping(ip1.Text) Then
    TextBox1.Text = "Estable"
Else
    TextBox1.Text = "Desconectado"
End If
 
If My.Computer.Network.Ping(ip2.Text) Then
    TextBox2.Text = "Estable"
Else
    TextBox2.Text = "Desconectado"
End If
 
.
.
.
.
.
.
If My.Computer.Network.Ping(ip25.Text) Then
    TextBox25.Text = "Estable"
Else
    TextBox25.Text = "Desconectado"
End If

Desde ya muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ping multiples host (Funciona muy lento)

Publicado por Phil Rob (1553 intervenciones) el 22/01/2019 11:49:04
Hola,
¿Por qué no la programación asíncrona?
Aquí hay un ejemplo (archivo de proyecto completo en adjuntado Asynchro.zip) :
Extractos de códigos:
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
' ... ... ...
    Delegate Function CheckPing(ByVal Ip As String) As String
    Dim Prueba As New CheckPing(AddressOf MiClasePing.ChkPing)
    Dim TablasResultas() As String
 
    Dim NuremoPruebos As Integer
 
    Private Sub MisPrueba()
        Dim IpTexto As String = "192.168.1."  ' Ip de 192.168.1.0 a 192.168.1.10
        NuremoPruebos = 10  ' cuantas pruebas
        For i As Integer = 0 To NuremoPruebos
            Prueba.BeginInvoke(IpTexto & (i.ToString).Trim, AddressOf Mostrar, Nothing)
        Next
        MessageBox.Show("Pruebas enviadas, resultados disponibles más tarde")
    End Sub
 
    Private Sub Mostrar(ByVal Resulta As IAsyncResult)
        Static NumeroResultas As Integer = 0
        If NumeroResultas = 0 Then
            ReDim TablasResultas(NumeroResultas)
        Else
            ReDim Preserve TablasResultas(NumeroResultas)
        End If
        NumeroResultas = TablasResultas.Length
        TablasResultas(NumeroResultas - 1) = Prueba.EndInvoke(Resulta)
 
    End Sub
 
' ... ... ...
 
Public Class MiClasePing
    Public Shared Function ChkPing(ByVal Ip As String) As String
        If My.Computer.Network.Ping(Ip) Then
            Return Ip & " " & "Estable"
        Else
            Return Ip & " " & "Desconectado"
        End If
    End Function
End Class
Ilustraciones de ejecución:
Asynch1
Asynch2
Asynch3
Espero que esto te ayudará ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar