From 31743a81384210138222e88ea6d21107d0fabae1 Mon Sep 17 00:00:00 2001 From: xiu2 <54703944+XIU2@users.noreply.github.com> Date: Tue, 1 Sep 2020 12:43:51 +0800 Subject: [PATCH] v1.2.1 --- go.mod | 2 +- main.go | 40 +++++++++++++++++++++++++++++++--------- tcping.go | 5 +++-- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 31dec57..27eaafa 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module CloudflareIPScanner +module CloudflareSpeedTest go 1.14 diff --git a/main.go b/main.go index 4ce5810..8a8a6d4 100644 --- a/main.go +++ b/main.go @@ -61,6 +61,21 @@ https://github.com/XIU2/CloudflareSpeedTest println(version) os.Exit(0) } + if pingRoutine <= 0 { + pingRoutine = 500 + } + if pingTime <= 0 { + pingTime = 4 + } + if downloadTestCount <= 0 { + downloadTestCount = 20 + } + if downloadSecond <= 0 { + downloadSecond = 10 + } + if ipFile == "" { + ipFile = "ip.txt" + } } func main() { @@ -74,12 +89,11 @@ func main() { var data = make([]CloudflareIPData, 0) fmt.Println("开始延迟测速(TCP):") - control := make(chan bool, pingRoutine) for _, ip := range ips { wg.Add(1) control <- false - handleProgress := handleProgressGenerator(bar) + handleProgress := handleProgressGenerator(bar) // 多线程进度条 go tcpingGoroutine(&wg, &mu, ip, pingTime, &data, control, handleProgress) } wg.Wait() @@ -87,14 +101,22 @@ func main() { sort.Sort(CloudflareIPDataSet(data)) // 排序 if !disableDownload { // 如果禁用下载测速就跳过 - bar = pb.Simple.Start(downloadTestCount) - fmt.Println("开始下载测速:") - for i := 0; i < downloadTestCount; i++ { - _, speed := DownloadSpeedHandler(data[i].ip) - data[i].downloadSpeed = speed - bar.Add(1) + if len(data) > 0 { // IP数组长度(IP数量) 大于 0 时继续 + if len(data) < downloadTestCount { // 如果IP数组长度(IP数量) 小于 下载测速次数,则次数改为IP数 + downloadTestCount = len(data) + fmt.Println("\n[信息] IP数量小于下载测速次数,下载测速次数改为IP数。\n") + } + bar = pb.Simple.Start(downloadTestCount) + fmt.Println("开始下载测速:") + for i := 0; i < downloadTestCount; i++ { + _, speed := DownloadSpeedHandler(data[i].ip) + data[i].downloadSpeed = speed + bar.Add(1) + } + bar.Finish() + } else { + fmt.Println("\n[信息] IP数量为 0,跳过下载测速。") } - bar.Finish() } ExportCsv("./result.csv", data) // 输出结果 } diff --git a/tcping.go b/tcping.go index 9d43090..5d86f2f 100644 --- a/tcping.go +++ b/tcping.go @@ -2,13 +2,14 @@ package main import ( "context" - "github.com/VividCortex/ewma" "io" "net" "net/http" "strconv" "sync" "time" + + "github.com/VividCortex/ewma" ) //bool connectionSucceed float32 time @@ -130,7 +131,7 @@ func DownloadSpeedHandler(ip net.IPAddr) (bool, float32) { var nextTime = timeStart.Add(timeSlice * time.Duration(timeCounter)) e := ewma.NewMovingAverage() - for ; contentLength != contentRead; { + for contentLength != contentRead { var currentTime = time.Now() if currentTime.After(nextTime) { timeCounter += 1