请原谅这个琐事问题
给定一组Ip,该集合非常大并且可能会增加 https://github.com/client9/ipcat/blob/master/datacenters.csv#L4
小例子集 - 第一列开始ip第二 - 结束IP范围
我将从请求中获取用户ip。我需要检查ip是否属于这些范围。我如何实现这一目标。
我调查了ip_range_check和range_check。
但他们没有给出给定范围的ip检查。如何在具有最佳性能的节点j中实现这一点。我不想进行详尽的搜索,因为性能是一个高优先级。
到目前为止,请帮助我做一些新的挑战。
答案 0 :(得分:8)
如果我们将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)
);
答案 1 :(得分:4)
import System.IO
main :: IO ()
main = do
hSetBuffering stdout NoBuffering
putStr "Hawk ID: "
hawkID <- getLine
let text = ...
writeFile "hawkID.hs" text
非常确定还有其他方法可以做到这一点。