修复 某些情况下下载测速数值过大的问题 (#290)
* fix the speed measurement value is too large * fix break when err == io.EOF
This commit is contained in:
parent
ed1d512d65
commit
f5ce273688
|
@ -167,10 +167,15 @@ func downloadHandler(ip *net.IPAddr) float64 {
|
|||
}
|
||||
bufferRead, err := response.Body.Read(buffer)
|
||||
if err != nil {
|
||||
if err != io.EOF { // 文件下载完了,或因网络等问题导致链接中断,则退出循环(终止测速)
|
||||
// 获取上个时间片
|
||||
last_time_slice := timeStart.Add(timeSlice * time.Duration(timeCounter-1))
|
||||
// 下载数据量 / (用当前时间 - 上个时间片/ 时间片)
|
||||
e.Add(float64(contentRead-lastContentRead) / (float64(currentTime.Sub(last_time_slice)) / float64(timeSlice)))
|
||||
|
||||
if err == io.EOF { // 文件下载完了,或因网络等问题导致链接中断,则退出循环(终止测速)
|
||||
break
|
||||
}
|
||||
e.Add(float64(contentRead-lastContentRead) / (float64(nextTime.Sub(currentTime)) / float64(timeSlice)))
|
||||
|
||||
}
|
||||
contentRead += int64(bufferRead)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue