List(of String) Pingen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Linkai.

    List(of String) Pingen

    Hallo liebe Community,
    Ich habe mal wieder einen trotalen Brainfail...

    Ich habe in einer Datenbank 3 Spalten:
    ID ---- Link ---- Aktiv


    Diese sind mit der ID einem link (bspw google.de/scripts/) und True oder False versehen
    Die Aktive = True gesetzten Links und IDs lasse ich mir ausgeben und speichere diese in einer List(of String)
    Nun habe ich folgenden Code:

    VB.NET-Quellcode

    1. Me.Invoke(Sub() lblStatus.Text = "Server werden ermittelt")
    2. functions.get_server()
    3. Dim pingms As New List(Of Integer)
    4. Dim reply As PingReply
    5. For Each server In functions.serverlist
    6. Dim s1 As String
    7. s1 = Replace(server, "http://", "")
    8. s1 = Replace(s1, "/patchserver/", "")
    9. Me.Invoke(Sub() lblNews.Text = "")
    10. Try
    11. reply = ping.Send(s1, 5000)
    12. If Not reply.Status = IPStatus.TimedOut Then
    13. pingms.Add(reply.RoundtripTime)
    14. Me.Invoke(Sub() lblNews.Text = lblNews.Text & reply.RoundtripTime & " : " & s1 & vbNewLine)
    15. ' MsgBox(reply.RoundtripTime)
    16. Else
    17. pingms.Add(200000)
    18. End If
    19. Catch ex As Exception
    20. MsgBox(ex.Message)
    21. End Try
    22. Next
    23. Dim aktserver As Integer = 0
    24. Dim i As Integer = 0
    25. Do Until i = pingms.Count - 1
    26. If i + 1 = pingms.Count Then
    27. Else
    28. If pingms(i) < pingms(i + 1) Then
    29. aktserver = i
    30. End If
    31. i += 1
    32. End If
    33. Loop
    34. Me.Invoke(Sub() lblStatus.Text = "Server wurden ermittelt")
    35. MsgBox(functions.patchserverlist(aktserver))


    Die Sache ist nun folgende: Ich möchte jeden Server in dieser List(of String) einmal anpingen und die Millisekunden speichern. Nachdem alle Gepingt wurden, will ich alle MS miteinander vergleichen und herausfinden, welcher Server die "schnellste" antwort gegeben hat.
    Diesen will ich dann als aktiven Server verwenden.

    Mein Problem:
    Ich habe 3 Server eingetragen wovon einer zum Test auf False steht also nicht aktiv.
    Die anderen beiden werden Brav gezogen und gepingt. Nun wird allerdings in das label lblNews immer nur der 1. server rein geschrieben und das Programm zeigt mir ab und an die MSGbox am ende nicht an.

    Ich weiß messagebox.show(blabla)
    :)
    Danke
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    mach dir ein typisiertes Dataset, mit einer typisierten Datatable, die derlei Server-Datensätze enthält.
    Ping alle Datensätze durch, und trage die PingTime ein.
    Rufe den Datensatz mit der niedrigsten PingTime ab.

    btw: In einer Datenbank sind keine Spalten. Da sind Tabellen drinne. Ebenso wie übrigens im typiserten Dataset, und diese Parallele ist kein Zufall.
    Brainfuck xD
    Natürlich hat ne Datenbank keine Spalten sondern Tabellen in denen sich diese Spalten befinden X( du weißt aber was ich meine xD

    Zu deinem Vorschlag:
    Ich arbeite nicht gerne mit Dataset und vorallem bin ich ein Dickkopf und ich will das mit diesen schleifen lösen nur habe ich das Gefühl, dass er einfach einen Teil meiner Schleife überspringt :O
    Kann mir denn einer sagen ob ich da nen denkfehler habe gerade hier?:

    VB.NET-Quellcode

    1. Do Until i = pingms.Count - 1
    2. If i + 1 = pingms.Count Then
    3. Else
    4. If pingms(i) < pingms(i + 1) Then
    5. aktserver = i
    6. End If
    7. i += 1
    8. End If
    9. Loop
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Um zusammengehörige Werte zusammenzufassen sind Datensätze erfunden worden, aber mit denen arbeitest du ja nicht gerne, du Dickkopf! ;)

    Ansonsten musst du halt den Index der schnellsten Zeit suchen, und dann annehmen, dass derselbe Index folglich auch den schnellsten Server indiziert.

    Ist nicht ganz was man i.a. unter "objektorientierter Programmierung" versteht, aber wenns unbedingt so muss...