Golang 随机生成ipv4和ipv6

随机生成ipv4

我们知道在计算机中每一个ipv4实际上都可以对应一个uint32的数,所以随机生成一些ip,实际上就是随机生成一些uint32的数。

type IPv4Int uint32

func (i IPv4Int) ip() net.IP {
    ip := make(net.IP, net.IPv6len)
    copy(ip, net.IPv4zero)
    binary.BigEndian.PutUint32(ip.To4(), uint32(i))
    return ip.To16()
}

func RandomIpv4Int() uint32 {
    return rand.New(rand.NewSource(time.Now().UnixNano())).Uint32()
}       

随机生成ipv6

type IPv6Int [2]uint64 

func RandomIpv6Int() (result [2]uint64) {
    result[0] = rand.New(rand.NewSource(time.Now().UnixNano())).Uint64()
    result[1] = rand.New(rand.NewSource(time.Now().UnixNano())).Uint64()
    return result 
}

func RandomIPv6(num int) []string {
    result := make([]string, 0)
    for i := 0; i < num; i++ {
        ipInt := IPv6Int(RandomIpv6Int())
        ip := ipInt.ip()
        result = append(result, ip.String())
    }
    return result
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容