Ping als signalbalken

  • Moin ich hab mal ne frage ist hat aber nicht so wirklich was mit dem proggen im autoit zu tun sondern eher mit der datenauswertung für mein neues programm.

    Also wie manche von euch vlt wissen ist in call of duty 4 in der playerliste bei der xobx kein ping sonder ein signalbalekn wie bei dem handy...

    hab ich gedacht cool will ich auch und ich hab mir signalbalken aus dem internet als bilder geholt...

    Jetz stellt sich die frage wie stellt man den ping sinnvoll dar den ich meine ich kann das nicht als normale prozentrechung machen sont wäre ja das signal immer perfekt oder gut oder garnix.

    aber das ganze mittelzeug fehlt ja dan oder empfiehlt sich ping überhaupt nicht für sowas, und wenn nein wie haben die es dan bei cod4 gemacht?

    2 Mal editiert, zuletzt von Matthias_199 (31. Mai 2009 um 19:18)

  • Ich verstrehe ja nicht, was du meinst, aber nimm doch einfach GuictrlcreatePic (......) und ändere in einer Schleie die Breite, bis dus voll hast ;)

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • also du wills das so machen das wenn der ping bei 1 ist nen "guter Empfang" signalbalken ist und wenn er bei 150 oder so ist da ein "voller/kiritischer" signalbalken für schlechten empfang kommt.. und je nach schritte dann immer ein anderer "status"

    sozusagen ein ladebalken für ein Ping?

    hmm...

    mit ner if schleife und

    [autoit]

    GuictrlcreatePic ()
    GUICtrlSetImage ()

    [/autoit]

    evtl?

    Kleiner AutoIt Lehrling :)

  • @blackdeath911

    bombenrichtig.
    das ich die bilder so mache ist mir vollkommen klar...
    aber nach welchem kreterium eben...
    also wo der übergang sein soll das ist mir unklar.
    und das mit 1 und 150 kann es ja auch net sein.. ich meine 150 ist auch kein extrem schlechter ping


    @ tobi_girst


    Coole idee dan komt man ja mit einem bild aus^^^^^

    aber nicht die lösung für mein problem^^

  • ja machs doch in den schritten

    PING = SIGNALSTÄRKE
    >001 = |||||||||||||||
    >010 = ||||||||||||||
    >020 = |||||||||||||
    >030 = ||||||||||||
    >040 = |||||||||||
    >050 = ||||||||||
    >060 = |||||||||
    >070 = ||||||||
    >080 = |||||||
    >090 = ||||||
    >100 = |||||
    >110 = ||||
    >120 = |||
    >130 = ||
    >140 = |
    >150 = CRITICAL

    also mit größer und kleiner...

    Kleiner AutoIt Lehrling :)

  • klar aber mein ping zu google.com 234 ms

    also würde das programm sagen keine verbindung???????

    gibt es da keine bessere möglichkeit..


    @blackdeath911

    Deine idee ist vollkoem ok aber für mech eben unpassend


    EDIT:

    Was ich eigendlich meine was wäre den die passenste ms range für so ein vorhaben...

    was auch von der fachmenischen seite vollkommen richtig ist

    • Offizieller Beitrag

    Eine absolute, allgemeingültige Bewertung läßt sich mit dem Ping-Befehl gar nicht durchführen.
    Zu viele Kriterien spielen da eine Rolle:
    - die "Entfernung" von Deinem Computer zum Ziel-Server (über wie viele Stationen das Ping-Paket geroutet wird)
    - die Auslastung, Geschwindigkeit und Antwort-Priorität der beteiligten Server (bei höherer Auslastung werden die Ping-Befehle später bearbeitet, weil geringere Priorität)
    - die Geschwindigkeit der "letzten Meile" (von Dir zu Deinem INet-Provider)

    All das verhindert, dass man das Ergebnis von User A (Standpunkt A) mit dem Ergebnis von User B (Standpunkt B) vergleichen kann. Die Ergebnisse können je nach Standort und oft je nach Tageszeit völlig unterschiedlich ausfallen.
    Eine Werte-Skala, wie Du Dir das wünschst, ist mit dem Ping-Befehl nicht machbar. Ist IMHO auch mit anderen Mitteln nicht machbar, aufgrund der Struktur des Internets.
    Somit reduziert sich eine "Bewertung" auf einen binären Wert: "True" oder "False". ;)

  • das ist ja bitter keine verbindung oder verbindung hergestellt lol..

    Ja wie machen die es dan bei call of duty 4???

    Haben die programmierer da einfach ein bisschen geschmummelt?

  • Da mit dem Ping die Reaktionszeit der Verbindung gemessen werden kann, kann es schon sinnvoll sin, diese Zeit zu bewerten. Für Spiele, in denen es auf Millisekunden ankommt ist ein Ping von mehr als 200 eben oftmals tödlich für deine Spielfigur ;)
    Aber bei COD ist das auch kein echter Ping sondern einfach die Latenzzeit der Verbindung und die Messung hat hier auch keine niedrige Prioriät, aber wie das gemessen wird, weiß ich jetzt nicht.

  • stimmt.

    Das heitst dan ich überlge mir was anderes

    ODer ich lasse das als ms stehen ich meine jeder zahlenwert ist aussagekräftiger als ein signalbalken

    Danke für die hilfe

    Edit:

    Ja das soll für so ne art gobale banliste sein wenn wer auf dem gamesver gebannt wird schickt er das zum ahuptserver der das in die globle lsite einträgt

    und der hauptserver soll alle gameserver anpingen um die verbidung zu checken

    Edit 2 : Verdammt ich dürcke nur einmal ENTEr um die zeile zu wechseln was er auch hier im bord editor macht aber im post sind es plötzlich 2-3

    Einmal editiert, zuletzt von Matthias_199 (31. Mai 2009 um 16:38)

    • Offizieller Beitrag

    Achso! Dann würde ich auch lieber den absoluten Wert in ms eintragen.
    Ich dachte, Du willst den Benutzer über die momentane "Verbindungsqualität" unterrichten. Dann hätte man vielleicht noch mit dynamischen Werten arbeiten können. Also den Wert für 0 und 100% erstmal fest vorgeben und dann (nach dem Ping-Befehl) vergleichen, ob die Zeit schlechter ist, als die bisherige schlechteste Zeit und diese dann als schlechtesten Wert nehmen. Das Gleiche dann für die beste Zeit.

  • ja gut ich hab das jetz anders gemacht mal ein ausschnitt von dem quellcode

    [autoit]

    Func _Ping($n = "")

    [/autoit][autoit][/autoit][autoit]

    $IP[$n] = IniRead ( "Server_Data\Settings\Ping_Setting.ini", "Input", "Input_"&$n,"")
    If $IP[$n] = "" Then
    $IP[$n] = "Nicht Verfügbar"
    EndIf
    $Step_1 = StringReplace ( $IP[$n], ".", "")
    $Step_2 = Number ($Step_1)
    If $Step_2 = 0 Then
    TCPStartup()
    $DNS_zu_IP = TCPNameToIP ($IP[$n])
    If $DNS_zu_IP = "" Then
    $IP[$n] = "Nicht verfügbar"
    $DNS[$n] = "Nicht verfügbar"
    Else
    $DNS[$n] = $IP[$n]
    $IP[$n] = $DNS_zu_IP
    EndIf
    TCPShutdown ()
    Else
    $DNS[$n] = "Nicht verfügbar"
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $Ping1 = Ping ($IP[$n],999)
    $Error1 = @error
    $Ping2 = Ping ($IP[$n],999)
    $Error2 = @error
    $Ping3 = Ping ($IP[$n],999)
    $Error3 = @error
    $Ping4 = Ping ($IP[$n],999)
    $Error4 = @error
    If $Ping1 > 0 Then
    $Ping1_Teiler = "1"
    Else
    $Ping1_Teiler = "0"
    EndIf
    If $Ping2 > 0 Then
    $Ping2_Teiler = "1"
    Else
    $Ping2_Teiler = "0"
    EndIf
    If $Ping3 > 0 Then
    $Ping3_Teiler = "1"
    Else
    $Ping3_Teiler = "0"
    EndIf
    If $Ping4 > 0 Then
    $Ping4_Teiler = "1"
    Else
    $Ping4_Teiler = "0"
    EndIf
    $Ping_Teiler_Gesamt = ($Ping1_Teiler + $Ping2_Teiler + $Ping3_Teiler + $Ping4_Teiler)
    If $Ping_Teiler_Gesamt > 0 Then
    $Ping_Gesamt[$n] = Round ((($Ping1 + $Ping2 + $Ping3 + $Ping4)/($Ping1_Teiler + $Ping2_Teiler + $Ping3_Teiler + $Ping4_Teiler)))
    Else
    $Ping_Gesamt[$n] = Round(($Ping1 + $Ping2 + $Ping3 + $Ping4))
    EndIf
    If $Error1 = $Error2 And $Error3 And $Error4 Then
    Switch $Error1
    Case $Error1 = 1
    $info[$n] = "Der Computer ist offline"
    Case $Error1 = 2
    $info[$n] = "Der Computer ist nicht erreichbar"
    Case $Error1 = 3
    $info[$n] = "Falsche Adresse"
    Case $Error1 = 4
    $info[$n] = "Andere Fehler"
    EndSwitch
    Else
    $info[$n] = "Mit Computer verbunden"
    EndIf
    EndFunc

    [/autoit]

    Das wäre bei mir die funktion für das pingen in und arrys werden benutz weil ich die funktion im hauptprogramm ein paar mal nutzen will. Also bei mir erkennt er einfach den durchschnittlichen ping