所以我想制作一个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:还有办法计算平均上传速度吗?
答案 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
。