3 Commits

Author SHA1 Message Date
xiu2
c045b914a4 修复 因修复上个 BUG 而产生的新 BUG(下载速度为 0.00)... 2023-02-12 16:35:30 +08:00
xiu2
d8db541c1f README.md 2023-02-11 18:28:43 +08:00
xiu2
65018cd415 README.md 2023-02-11 13:08:08 +08:00
2 changed files with 15 additions and 11 deletions

View File

@@ -41,10 +41,10 @@ mkdir CloudflareST
cd CloudflareST
# 下载 CloudflareST 压缩包(自行根据需求替换 URL 中 [版本号] 和 [文件名]
wget -N https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.0/CloudflareST_linux_amd64.tar.gz
wget -N https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.1/CloudflareST_linux_amd64.tar.gz
# 如果你是在国内服务器上下载,那么请使用下面这几个镜像加速:
# wget -N https://download.fastgit.org/XIU2/CloudflareSpeedTest/releases/download/v2.2.0/CloudflareST_linux_amd64.tar.gz
# wget -N https://ghproxy.com/https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.0/CloudflareST_linux_amd64.tar.gz
# wget -N https://download.fastgit.org/XIU2/CloudflareSpeedTest/releases/download/v2.2.1/CloudflareST_linux_amd64.tar.gz
# wget -N https://ghproxy.com/https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.1/CloudflareST_linux_amd64.tar.gz
# 如果下载失败的话,尝试删除 -N 参数(如果是为了更新,则记得提前删除旧压缩包 rm CloudflareST_linux_amd64.tar.gz
# 解压(不需要删除旧文件,会直接覆盖,自行根据需求替换 文件名)
@@ -71,7 +71,7 @@ chmod +x CloudflareST
### 结果示例
测速完毕后,默认会显示**最快的 10 个 IP**,示例(我联通白天测速结果)
测速完毕后,默认会显示**最快的 10 个 IP**,示例:
``` bash
IP 地址 已发送 已接收 丢包率 平均延迟 下载速度 (MB/s)
@@ -92,9 +92,15 @@ IP 地址 已发送 已接收 丢包率 平均延迟 下载速度
# 因为每次测速都是在每个 IP 段中随机 IP所以每次的测速结果都不可能相同这是正常的
# 注意!我发现电脑开机后第一次测速延迟会明显偏高,后续测速都正常,建议大家开机后第一次随便测几个 IP 后再正式开始测速。
# 注意!我发现电脑开机后第一次测速延迟会明显偏高(手动 TCPing 也一样),后续测速都正常
# 因此建议大家开机后第一次正式测速前,先随便测几个 IP无需等待延迟测速完成只要进度条动了就可以直接关了
# 软件是先 延迟测速并按从低到高排序后,再从 最低延迟的 IP 开始下载测速的,所以
# 软件在 默认参数 下的整个流程大概步骤
# 1. 延迟测速(默认 TCPing 模式HTTPing 模式需要手动加上参数)
# 2. 延迟排序(延迟从低到高排序,不同丢包率的会分开独立排序,因此可能会有一些延迟低但丢包的 IP 被排到后面)
# 3. 下载测速(从延迟最低的 IP 开始依次下载测速,默认测够 10 个就会停止)
# 4. 速度排序(速度从高到低排序)
# 5. 输出结果(可依靠参数控制是否输出到命令行(-p 0)/文件(-o "")
```
测速结果第一行就是**既下载速度最快、又平均延迟最低的最快 IP**!至于拿来干嘛?取决于你~

View File

@@ -167,15 +167,13 @@ func downloadHandler(ip *net.IPAddr) float64 {
}
bufferRead, err := response.Body.Read(buffer)
if err != nil {
if err != io.EOF { // 如果文件下载过程中遇到报错(如 Timeout且并不是因为文件下载完了则退出循环终止测速
break
}
// 获取上个时间片
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
}
}
contentRead += int64(bufferRead)
}