diff --git a/IPRangeLoader.go b/IPRangeLoader.go index 9952663..9b89cd4 100644 --- a/IPRangeLoader.go +++ b/IPRangeLoader.go @@ -11,9 +11,14 @@ import ( func getCidrHostNum(maskLen int) int { cidrIpNum := int(0) - var i int = int(32 - maskLen - 1) - for ; i >= 1; i-- { - cidrIpNum += 1 << i + if maskLen < 32 { + var i int = int(32 - maskLen - 1) + for ; i >= 1; i-- { + cidrIpNum += 1 << i + } + cidrIpNum += 2 + } else { + cidrIpNum = 1 } return cidrIpNum } @@ -32,9 +37,9 @@ func loadFirstIPOfRangeFromFile(ipFile string) []net.IPAddr { //fmt.Println(firstIP) //fmt.Println(IPRange) Mask, _ := strconv.Atoi(strings.Split(scanner.Text(), "/")[1]) - MaxIPNum := getCidrHostNum(Mask) - 1 - if MaxIPNum > 253 { - MaxIPNum = 253 + MaxIPNum := getCidrHostNum(Mask) + if MaxIPNum > 255 { + MaxIPNum = 255 } //fmt.Println(MaxIPNum) if err != nil { @@ -42,7 +47,7 @@ func loadFirstIPOfRangeFromFile(ipFile string) []net.IPAddr { } if ipv6Mode { // IPv6 var tempIP uint8 - MaxIPNum = 254 + MaxIPNum = 255 for IPRange.Contains(firstIP) { //fmt.Println(firstIP) //fmt.Println(firstIP[0], firstIP[1], firstIP[2], firstIP[3], firstIP[4], firstIP[5], firstIP[6], firstIP[7], firstIP[8], firstIP[9], firstIP[10], firstIP[11], firstIP[12], firstIP[13], firstIP[14], firstIP[15]) @@ -111,9 +116,15 @@ func loadFirstIPOfRangeFromFile(ipFile string) []net.IPAddr { //fmt.Println(firstIP) //fmt.Println(firstIP[15]) if allip { - for i := 1; i < MaxIPNum+2; i++ { - firstIP[15] = uint8(i) // 随机 IP 的最后一段 0.0.0.X - //fmt.Println(firstIP) + if firstIP[15] == 0 { // 当 IP 最后一段为 0 时会按顺序生成 IP + for i := 0; i < MaxIPNum; i++ { + firstIP[15] = uint8(i) // 按顺序生成 IP 的最后一段 0.0.0.X + //fmt.Println(firstIP) + firstIPCopy := make([]byte, len(firstIP)) + copy(firstIPCopy, firstIP) + firstIPs = append(firstIPs, net.IPAddr{IP: firstIPCopy}) + } + } else { // 当 IP 最后一段不为 0 时,则保留 IP 最后一段 firstIPCopy := make([]byte, len(firstIP)) copy(firstIPCopy, firstIP) firstIPs = append(firstIPs, net.IPAddr{IP: firstIPCopy}) diff --git a/README.md b/README.md index 9bc4196..e5e056c 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ IP 地址, 已发送, 已接收, 丢包率, 平均延迟, 下载速度 (MB/s) **** ## 进阶使用 -直接双击运行使用的是默认参数,如果想要测速结果更全面、更符合自己的要求,可以自定义参数。 +直接运行使用的是默认参数,如果想要测速结果更全面、更符合自己的要求,可以自定义参数。 ``` cmd C:\>CloudflareST.exe -h diff --git a/util.go b/util.go index 142f1d8..c4003e0 100644 --- a/util.go +++ b/util.go @@ -92,7 +92,7 @@ func initRandSeed() { } func randipEndWith(num int) uint8 { - return uint8(rand.Intn(num) + 1) + return uint8(rand.Intn(num)) } func GetRandomString() string {