想要检查子网是否存在于给定的子网中或不使用 javascript

问题描述

我有两个子网值,例如:

答:123.23.34.45/23 乙: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,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>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...