@@ -15,6 +15,7 @@ var version string
15
15
var disableDownload bool
16
16
var ipFile string
17
17
var outputFile string
18
+ var printResult int
18
19
19
20
func init () {
20
21
var downloadSecond int64
@@ -26,15 +27,17 @@ https://github.com/XIU2/CloudflareSpeedTest
26
27
27
28
参数:
28
29
-n 500
29
- 测速线程数量;数值越大速度越快,请勿超过1000 (结果误差大);(默认 500)
30
+ 测速线程数量;数值越大速度越快,请勿超过 1000 (结果误差大);(默认 500)
30
31
-t 4
31
32
延迟测速次数;单个 IP 测速次数,为 1 时将过滤丢包的IP,TCP协议;(默认 4)
32
33
-dn 20
33
- 下载测速数量;延迟测速并排序后,从最低延迟起测试下载速度的数量 ,请勿太多(速度慢);(默认 20)
34
+ 下载测速数量;延迟测速并排序后,从最低延迟起下载测速数量 ,请勿太多(速度慢);(默认 20)
34
35
-dt 10
35
36
下载测速时间;单个 IP 测速最长时间,单位:秒;(默认 10)
37
+ -p 20
38
+ 直接显示结果;测速后直接显示指定数量的结果,为 -1 时不显示结果直接退出;(默认 20)
36
39
-f ip.txt
37
- IP 数据文件;相对/绝对路径,如包含空格请加上引号;支持其他 CDN IP段,记得禁用下载测试 ;(默认 ip.txt)
40
+ IP 数据文件;相对/绝对路径,如包含空格请加上引号;支持其他 CDN IP段,记得禁用下载测速 ;(默认 ip.txt)
38
41
-o result.csv
39
42
输出结果文件;相对/绝对路径,如包含空格请加上引号;允许 .txt 等后缀;(默认 result.csv)
40
43
-dd
@@ -45,14 +48,15 @@ https://github.com/XIU2/CloudflareSpeedTest
45
48
打印帮助说明
46
49
47
50
示例:
48
- CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10
49
- CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "ip.txt" -o "result.csv" -dd
50
- CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -f "C:\abc\ip.txt" -o "C:\abc\result.csv" -dd`
51
+ CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -p 20
52
+ CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -p -1 - f "ip.txt" -o "result.csv" -dd
53
+ CloudflareST.exe -n 500 -t 4 -dn 20 -dt 10 -p -1 - f "C:\abc\ip.txt" -o "C:\abc\result.csv" -dd`
51
54
52
55
flag .IntVar (& pingRoutine , "n" , 500 , "测速线程数量" )
53
56
flag .IntVar (& pingTime , "t" , 4 , "延迟测速次数" )
54
57
flag .IntVar (& downloadTestCount , "dn" , 20 , "下载测速数量" )
55
58
flag .Int64Var (& downloadSecond , "dt" , 10 , "下载测速时间" )
59
+ flag .IntVar (& printResult , "p" , 20 , "直接显示结果" )
56
60
flag .BoolVar (& disableDownload , "dd" , false , "禁用下载测速" )
57
61
flag .StringVar (& ipFile , "f" , "ip.txt" , "IP 数据文件" )
58
62
flag .StringVar (& outputFile , "o" , "result.csv" , "输出结果文件" )
@@ -78,6 +82,9 @@ https://github.com/XIU2/CloudflareSpeedTest
78
82
if downloadSecond <= 0 {
79
83
downloadSecond = 10
80
84
}
85
+ if printResult == 0 {
86
+ printResult = 20
87
+ }
81
88
if ipFile == "" {
82
89
ipFile = "ip.txt"
83
90
}
@@ -108,7 +115,9 @@ func main() {
108
115
bar .Finish ()
109
116
110
117
sort .Sort (CloudflareIPDataSet (data )) // 排序
111
- if ! disableDownload { // 如果禁用下载测速就跳过
118
+
119
+ // 下载测速
120
+ if ! disableDownload { // 如果禁用下载测速就跳过
112
121
if len (data ) > 0 { // IP数组长度(IP数量) 大于 0 时继续
113
122
if len (data ) < downloadTestCount { // 如果IP数组长度(IP数量) 小于 下载测速次数,则次数改为IP数
114
123
downloadTestCount = len (data )
@@ -126,5 +135,27 @@ func main() {
126
135
fmt .Println ("\n [信息] IP数量为 0,跳过下载测速。" )
127
136
}
128
137
}
129
- ExportCsv (outputFile , data ) // 输出结果
138
+
139
+ // 直接输出结果
140
+ if printResult > 0 { // 如果禁用下载测速就跳过
141
+ dateString := convertToString (data ) // 转为多维数组 [][]String
142
+ if len (dateString ) > 0 { // IP数组长度(IP数量) 大于 0 时继续
143
+ if len (dateString ) < printResult { // 如果IP数组长度(IP数量) 小于 打印次数,则次数改为IP数量
144
+ printResult = len (dateString )
145
+ fmt .Println ("\n [信息] IP数量小于显示结果数量,显示结果数量改为IP数量。\n " )
146
+ }
147
+ fmt .Println ("\n IP 地址 \t " , "测试次数\t " , "成功次数\t " , "成功比率\t " , "平均延迟\t " , "下载速度 (MB/s)" )
148
+ for i := 0 ; i < printResult ; i ++ {
149
+ fmt .Println (dateString [i ][0 ], "\t " , dateString [i ][1 ], "\t \t " , dateString [i ][2 ], "\t \t " , dateString [i ][3 ], "\t \t " , dateString [i ][4 ], "\t " , dateString [i ][5 ])
150
+ }
151
+ fmt .Printf ("\n 完整内容请查看 %v 文件。请按 回车键 或 Ctrl+C 退出。" , outputFile )
152
+ var pause int
153
+ fmt .Scanln (& pause )
154
+ } else {
155
+ fmt .Println ("\n [信息] IP数量为 0,跳过输出结果。" )
156
+ }
157
+ }
158
+
159
+ // 输出结果到文件
160
+ ExportCsv (outputFile , data )
130
161
}
0 commit comments