gpt4 book ai didi

go - 如何列出网络中的所有 IP

转载 作者:行者123 更新时间:2023-12-01 22:40:36 25 4
gpt4 key购买 nike

Python 在 ipaddress 中有一个方法模块列出网络中的所有 IP。例如。

import ipaddress
ips = [ip for ip in ipaddress.ip_network('8.8.8.0/24').hosts()]

你会如何在 Go 中做同样的事情?

最佳答案

将 CIDR 地址和网络掩码转换为 uint32。找到开始和结束,然后在 uint32 上循环以获取地址

package main

import (
"encoding/binary"
"fmt"
"log"
"net"
)

func main() {
// convert string to IPNet struct
_, ipv4Net, err := net.ParseCIDR("192.168.255.128/25")
if err != nil {
log.Fatal(err)
}

// convert IPNet struct mask and address to uint32
// network is BigEndian
mask := binary.BigEndian.Uint32(ipv4Net.Mask)
start := binary.BigEndian.Uint32(ipv4Net.IP)

// find the final address
finish := (start & mask) | (mask ^ 0xffffffff)

// loop through addresses as uint32
for i := start; i <= finish; i++ {
// convert back to net.IP
ip := make(net.IP, 4)
binary.BigEndian.PutUint32(ip, i)
fmt.Println(ip)
}

}

https://play.golang.org/p/5Yq0kXNnjYx

关于go - 如何列出网络中的所有 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60540465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com