如何检测平均下载速度?

时间:2016-09-25 15:41:42

标签: c# vb.net visual-studio

所以我想制作一个Speedtest,我正在下载一个100MB的文件(测试平均下载速度是不是太多了?)。 我得到了一个巨大的数字,我不能像那样计算平均下载速度......

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If Downloading Then Exit Sub
    Downloading = True

    Dim wc As New WebClient
    AddHandler wc.DownloadProgressChanged, AddressOf wc_ProgressChanged
    AddHandler wc.DownloadFileCompleted, AddressOf wc_DownloadDone

    wc.DownloadFileAsync(New Uri("http://speedtest.ftp.otenet.gr/files/test100Mb.db"), tmp, Stopwatch.StartNew)
End Sub

Private Sub wc_DownloadDone(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs)
    Downloading = False
End Sub

Private Sub wc_ProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs)
    Me.Label2.Text = (e.BytesReceived / (DirectCast(e.UserState, Stopwatch).ElapsedMilliseconds / 1000.0#)).ToString("#")
End Sub

Offtopic:还有办法计算平均上传速度吗?

2 个答案:

答案 0 :(得分:2)

您获得的巨大数字是字节/秒。您需要将其除以1024以获得千字节/秒或(1024 * 1024)以获得兆字节/秒

Me.Label2.Text = (e.BytesReceived / (DirectCast(e.UserState, Stopwatch).ElapsedMilliseconds / 1000.0#) / (1024 * 1024)).ToString("#")

要像速度测试那样每秒获得Megabits,你还需要乘以8

Me.Label2.Text = (e.BytesReceived / (DirectCast(e.UserState, Stopwatch).ElapsedMilliseconds / 1000.0#) / (1024 * 1024) * 8).ToString("#")

答案 1 :(得分:0)

取决于您希望速度测试的准确度,文件越大,准确度越高。但这对用户来说可能是一个很大的烦恼/数据困扰。

出现大数字是因为它以字节为单位,以获得你需要做的Mb / s Your result / 1024^2