美文网首页
Golang 随机生成ipv4和ipv6

Golang 随机生成ipv4和ipv6

作者: L白水飘萍 | 来源:发表于2019-06-26 20:28 被阅读0次

    随机生成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
    }
    
    

    相关文章

      网友评论

          本文标题:Golang 随机生成ipv4和ipv6

          本文链接:https://www.haomeiwen.com/subject/gsphcctx.html