判断ip所在的c段数量 显示ip情况
比如 一个文本内有
1.27.0.0.1
127.0.0.2
127.7.7.1
执行代码后显示
127.0.0.1/24 内包含有2个ip
127.7.7.1/24 内包含1个ip
package main
import (
"fmt"
"io/ioutil"
"net"
"strings"
)
func main() {
// 读取文件内容
data, err := ioutil.ReadFile("ip.txt")
if err != nil {
panic(err)
}
// 定义一个字典,用来记录每个IP段的统计数量
//声明一个字典,将IP段的字符串形式作为键,统计数量作为值
//然后,我们可以遍历文本内的所有IP地址,将每个IP地址所在的IP段(即子网)的字符串形式作为键,从字典中获取对应的值,并将值加1。
ipCounts := make(map[string]int)
// 提取文本内的所有IP地址
for _, line := range strings.Split(string(data), "\n") {
if line == "" {
continue
}
ip := net.ParseIP(line)
if ip == nil {
continue
}
// 获取IP地址所在的IP段(即子网)
ip, ipnet, err := net.ParseCIDR(ip.String() + "/24")