想要使用 javascript 检查给定子网中是否存在子网
Want to check if a subnet is present in a given subnet or not using javascript
我有两个子网值,例如:
A: 123.23.34.45/23
B: 102.34.45.32/32
我想检查值 B 是否在 A 的范围内。我尝试使用库网络掩码,任何人都可以建议任何其他库或任何解决方案来实现这个。
这是一个简短的片段:
function ipNetwork(ip,network,mask)
{
ip = Number(ip.split('.').reduce(
(ipInt, octet) => (ipInt << 8) + parseInt(octet || 0, 10), 0)
);
network = Number(network.split('.').reduce(
(ipInt, octet) => (ipInt << 8) + parseInt(octet || 0, 10), 0)
);
mask = parseInt('1'.repeat(mask) + '0'.repeat(32 - mask), 2);
return (ip & mask) == (network & mask);
}
function check()
{
alert(
ipNetwork(
document.test.ip_addr.value,
document.test.network_addr.value,
document.test.network_mask.value
) ? 'IP is inside the network' : 'IP is not from the network')
}
<form name="test">
<label>
Network address
<input name="network_addr" value="123.23.34.45">
</label>
<label>
Network mask
<input name="network_mask" value="23">
</label>
<label>
IP address
<input name="ip_addr" value="102.34.45.32">
</label>
<button type="button" onclick="check()">Check</button>
</form>
我有两个子网值,例如:
A: 123.23.34.45/23 B: 102.34.45.32/32
我想检查值 B 是否在 A 的范围内。我尝试使用库网络掩码,任何人都可以建议任何其他库或任何解决方案来实现这个。
这是一个简短的片段:
function ipNetwork(ip,network,mask)
{
ip = Number(ip.split('.').reduce(
(ipInt, octet) => (ipInt << 8) + parseInt(octet || 0, 10), 0)
);
network = Number(network.split('.').reduce(
(ipInt, octet) => (ipInt << 8) + parseInt(octet || 0, 10), 0)
);
mask = parseInt('1'.repeat(mask) + '0'.repeat(32 - mask), 2);
return (ip & mask) == (network & mask);
}
function check()
{
alert(
ipNetwork(
document.test.ip_addr.value,
document.test.network_addr.value,
document.test.network_mask.value
) ? 'IP is inside the network' : 'IP is not from the network')
}
<form name="test">
<label>
Network address
<input name="network_addr" value="123.23.34.45">
</label>
<label>
Network mask
<input name="network_mask" value="23">
</label>
<label>
IP address
<input name="ip_addr" value="102.34.45.32">
</label>
<button type="button" onclick="check()">Check</button>
</form>