12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package main
- import (
- "fmt"
- "github.com/cheggaaa/pb/v3"
- "sort"
- "sync"
- "time"
- )
- func handleUserInput() {
- fmt.Println("请输入扫描协程数(数字越大越快,默认400):")
- fmt.Scanln(&pingRoutine)
- if pingRoutine <= 0 {
- pingRoutine = 400
- }
- fmt.Println("请输入tcping次数(默认10):")
- fmt.Scanln(&pingTime)
- if pingTime <= 0 {
- pingTime = 10
- }
- fmt.Println("请输入要测试的下载节点个数(默认10):")
- fmt.Scanln(&downloadTestCount)
- if downloadTestCount <= 0 {
- downloadTestCount = 10
- }
- fmt.Println("请输入下载测试时间(默认10,单位为秒):")
- var downloadSecond int64
- fmt.Scanln(&downloadSecond)
- if downloadSecond <= 0 {
- downloadSecond = 10
- }
- downloadTestTime = time.Duration(downloadSecond) * time.Second
- }
- func main() {
- initipEndWith()
- handleUserInput()
- ips := loadFirstIPOfRangeFromFile()
- pingCount := len(ips) * pingTime
- bar := pb.StartNew(pingCount)
- var wg sync.WaitGroup
- var mu sync.Mutex
- var data = make([]CloudflareIPData, 0)
- fmt.Println("开始tcping")
- control := make(chan bool, pingRoutine)
- for _, ip := range ips {
- wg.Add(1)
- control <- false
- handleProgress := handleProgressGenerator(bar)
- go tcpingGoroutine(&wg, &mu, ip, pingTime, &data, control, handleProgress)
- }
- wg.Wait()
- bar.Finish()
- bar = pb.StartNew(downloadTestCount)
- sort.Sort(CloudflareIPDataSet(data))
- fmt.Println("开始下载测速")
- for i := 0; i < downloadTestCount; i++ {
- _, speed := DownloadSpeedHandler(data[i].ip)
- data[i].downloadSpeed = speed
- bar.Add(1)
- }
- bar.Finish()
- ExportCsv("./result.csv", data)
- }
|