javascript - 如何使用 Node js检查给定的ip是否在给定的ip范围之间

标签 javascript node.js ip

请原谅这个琐碎的问题

给定一组IP,该组非常大并且可能会增加
https://github.com/client9/ipcat/blob/master/datacenters.csv#L4

小样本集 - 第一列开始 ip 第二 - 结束 ip 范围

enter image description here

我将从请求中获取用户 ip。我需要检查 ip 是否在这些范围内。我如何做到这一点。

我调查了ip_range_checkrange_check .

但他们不检查给定范围的 ip。这在 Node js 中如何实现最高性能。我不想进行详尽的搜索,因为性能是重中之重。

到目前为止,请帮助我做一些新的和相当具有挑战性的事情。

最佳答案

如果我们将 ips 转换为简单的数字,这很容易:

function IPtoNum(ip){
  return Number(
    ip.split(".")
      .map(d => ("000"+d).substr(-3) )
      .join("")
  );
}

然后我们可以检查某个范围为:
 if( IPtoNum(min) < IPtoNum(val) &&    IPtoNum(max) > IPtoNum(val) ) alert("in range");

这也可以应用于表格:
const ranges = [
  ["..41", "192.168.45"],
  ["123.124.125"," 126.124.123"]
];

const ip = "125.12.125";
const inRange = ranges.some(
  ([min,max]) => IPtoNum(min) < IPtoNum(ip) &&   IPtoNum(max) > IPtoNum(ip)
);

关于javascript - 如何使用 Node js检查给定的ip是否在给定的ip范围之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46200086/

相关文章:

sockets - 原始套接字未收到 icmp 响应

javascript - 如何在 react 中添加作用域的CSS?

javascript - AutoHotKey JavaScript 链接

javascript - 父 <div> 的链接更改类,两个 &lt;iframe&gt; 元素的内容

node.js - SocketIo 和 Redis 多重发射处理

javascript - 对数组中的每个对象运行 PostgreSQL UPDATE 查询

javascript - 我如何在 Meteor 中隐藏动态元素?

node.js - Node.js 还是 "bleeding-edge"吗?

检查argv[1]是否是十六进制字符串

MySQL远程访问津贴