我有一个 IP 地址和掩码(例如 IP 是 10.128.20.1,掩码是 255.255.248.0)。我如何计算,在哪个子网范围内添加了 IP?
我尝试实施已建立的解决方案,在其中按 IP 和掩码列出所有子网,然后测试 IP 地址是否在子网中。但我尝试找到更简单的方法。
我有一个 IP 地址和掩码(例如 IP 是 10.128.20.1,掩码是 255.255.248.0)。我如何计算,在哪个子网范围内添加了 IP?
我尝试实施已建立的解决方案,在其中按 IP 和掩码列出所有子网,然后测试 IP 地址是否在子网中。但我尝试找到更简单的方法。
谢谢,我附上部分解决方案:
$ip_addr = "192.168.36.9";
$subnet_mask = "255.255.248.0";
$ip = ip2long($ip_addr);
$nm = ip2long($subnet_mask);
$nw = ($ip & $nm);
$bc = $nw | (~$nm);
echo "IP Address: " . long2ip($ip) . "\n";
echo "Subnet Mask: " . long2ip($nm) . "\n";
echo "Network Address: " . long2ip($nw) . "\n";
echo "Broadcast Address: " . long2ip($bc) . "\n";
echo "Number of Hosts: " . ($bc - $nw - 1) . "\n";
echo "Host Range: " . long2ip($nw + 1) . " -> " . long2ip($bc - 1) . "\n";
如果我使用零子网,这项工作。对于无零子网,此示例不起作用。