Downloadgeschwindigkeit berechnen

  • Hallo,
    ich habe mir ein kleinen downloader gebastelt. Er zeit bis jetzt den Vortschrit an. Jetzt würde ich gerne auch eine Downloadgeschwindkeit einbauen.
    Leider habe ich kein Tutorial oder Beitrag gefunden der erklärt wie bei InetGetInfo die Funktionen zusammenspielen, sondern einfach nur der Code hingeklatscht :(
    Könnte mir einer erklären wie ich die Downloadgeschwindigkeit berechnen kann?
    mfg Freaky

    Einmal editiert, zuletzt von Freaky (14. Juli 2011 um 23:12)

  • Ich kann dir höchstens noch mehr Code hinklatschen, aber das Grundprinzip ist einfach. Genaue Erklärung, siehe hier.

    *hinklatsch*
    [autoit]

    #include <Date.au3>

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

    ; - Author: name22(http://www.autoit.de)

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

    Global $sURL = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"

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

    Global $iSizeBytes = InetGetSize($sURL)
    Global $hDownload = InetGet($sURL, StringTrimLeft($sURL, StringInStr($sURL, "/", 0, -1)), 0, 1)
    Global $iH, $iM, $iS, $nT = TimerInit()

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

    ProgressOn("Download", "0% Completed - 0 bps", "ETA: 00:00:00", Default, Default, 18)

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

    Do
    $iCompletedBytes = InetGetInfo($hDownload, 0)
    $nPercent = $iCompletedBytes * 100 / $iSizeBytes
    $nElapsedTime = TimerDiff($nT)

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

    $nBPS = $iCompletedBytes / ($nElapsedTime / 1000)
    _TicksToTime($iSizeBytes / $nBPS, $iH, $iM, $iS)

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

    ProgressSet($nPercent, "ETA: " & StringFormat("%02d:%02d:%02d", $iH, $iM, $iS), Round($nPercent, 1) & "% Completed - " & Int($nBPS) & " bps")

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

    Sleep(50)
    Until InetGetInfo($hDownload, 2)

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

    ProgressSet(100, "", "Download completed.")
    Sleep(500)
    ProgressOff()
    MsgBox(64, "Info", "Download completed.")

    [/autoit]
  • Hey,
    danke. Der Code ist wenigstens leichter zu verstehen als der von AutoBert den ich gefunden habe.
    Mit bps ist doch Bytes per second bemeint oder? (Jaja mein Englisch :D)
    Wenn ich dies in KB haben möchte. muss ich * oder / durch 1024 rechnen?

  • Erst mit

    [autoit]

    InetGetSize

    [/autoit]


    die gesamtgröße ermitteln und dann währenddessen mit

    [autoit]

    InetGetInfo($dl, 0) / 1024 / 1024

    [/autoit]


    weißt du wieviel MB bereits geladen wurden.

    Anhand dieser 2 Werte kannst du berechnen wieviel kb/sekunde heruntergeladen werden.
    Um einen möglichst genauen, wenig schwankenden Wert zu bekommen solltest du aus allen Werten die du bekommst den Durchschnitt bilden und anzeigen.

    Edit: name22 war schneller :/ du sau :D
    um von Bytes auf Kilobytes zu kommen musst du / 1024