【问题标题】:Given a netmask, calculates the number of available hosts?给定一个网络掩码,计算可用主机的数量?
【发布时间】:2013-10-22 10:22:57
【问题描述】:

在Go中,我找到了这样一个算法,但是我看不懂,谁能给我解释一下,谢谢!

func networkSize(mask net.IPMask) int32 {
    m := net.IPv4Mask(0, 0, 0, 0)
    for i := 0; i < net.IPv4len; i++ {
        m[i] = ^mask[i]
    }

    return int32(binary.BigEndian.Uint32(m)) + 1
}

【问题讨论】:

    标签: linux go network-programming


    【解决方案1】:

    反转网络掩码中的每个位,将结果视为 bigendian 32 位整数的 4 个字节,并将结果加 1。所以 255.255.252.0 => 00000000.00000000.00000011.11111111 => 1023,加 1 就是 1024。

    【讨论】:

      【解决方案2】:

      IP 地址与子网掩码是合乎逻辑的。子网掩码可用于分割出许多 net_id。在此处阅读示例:http://www.garykessler.net/library/subnet_masks.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 2014-09-05
        • 2013-03-03
        • 2021-05-20
        • 2014-10-26
        • 1970-01-01
        • 2013-11-15
        相关资源
        最近更新 更多