所在位置:首页 > 学习心得 > isInNet 在Javascript 中的实现
isInNet 在Javascript 中的实现
  • isInNet 在Javascript 中的实现
    发布时间:2011-04-18 类别:javascript技术 来源:侠客工作室
    • 1
    • 2
    • 3
    • 4
    • 5
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>isInNet 在Javascript 中 的实现</title>
    <script>
    //isInNet 实际上也是javascript 函数,但是只能在 .pac 文件中使用,用于动态设置代理服务器
    //而我想在一般的网页中使用,找了半天没找到,只能自己写。

    //实现javascript 中判断某个IP 是否在某个网段内部。也就是说,判断某个IP是否在特地的IP范围内
    //alert(isInNet("169.163.177.255","169.163.177.0",24));
    //ipMask 表示子网掩码中 1 的个数。24 表示 255.255.255.0

    //ipMask can be 1-31
    function isInNet(ipToCheck,ipRangeFrom,ipMask)
    {
    var ipNumbers = Math.pow(2,(32-ipMask));
    var lngFrom = ip2long(ipRangeFrom);
    var lngTo = lngFrom + ipNumbers-1;
    return isInNetByNumber(ipToCheck, lngFrom ,lngTo );
    }


    function isInNetByRange(ipToCheck,ipRangeFrom,ipRangeTo)
    {
    var lngToCheck = ip2long(ipToCheck);
    var lngFrom = ip2long(ipRangeFrom);
    var lngTo = ip2long(ipRangeTo);
    return isInNetByNumber(ipToCheck,lngFrom,ipTo);
    }

    function isInNetByNumber(ipToCheck,lngFrom,lngTo)
    {
    var lngToCheck = ip2long(ipToCheck);
    return (lngToCheck>=lngFrom && lngToCheck<=lngTo);
    }

    function ip2long( ip_address )
    {   
    var output = false;
    if ( ip_address.match ( /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ ) )
    {
         var parts = ip_address.split ( ‘.‘ );
         var output = 0;

         output = ( parts [ 0 ] * Math.pow ( 256, 3 ) ) +
                 ( parts [ 1 ] * Math.pow ( 256, 2 ) ) +
                 ( parts [ 2 ] * Math.pow ( 256, 1 ) ) +
                 ( parts [ 3 ] * Math.pow ( 256, 0 ) );
    }
        
    return output;
    }

    function long2ip( proper_address )
    {
    var output = false;

    if ( !isNaN ( proper_address ) && ( proper_address >= 0 || proper_address <= 4294967295 ) ) {
         output = Math.floor (proper_address / Math.pow ( 256, 3 ) ) + ‘.‘ +
                 Math.floor ( ( proper_address % Math.pow ( 256, 3 ) ) / Math.pow ( 256, 2 ) ) + ‘.‘ +
                 Math.floor ( ( ( proper_address % Math.pow ( 256, 3 ) ) % Math.pow ( 256, 2 ) ) / Math.pow ( 256, 1 ) ) + ‘.‘ +
                 Math.floor ( ( ( ( proper_address % Math.pow ( 256, 3 ) ) % Math.pow ( 256, 2 ) ) % Math.pow ( 256, 1 ) ) / Math.pow ( 256, 0 ) );
    }

    return output;
    }
    alert(isInNet("169.163.176.255","169.163.177.0",24));
    </script>
    </head>

    <body>
    </body>
    </html>

  • ☆☆☆技术交流群:5684178☆☆☆
  • 上一篇:javascript中获取中英文字符长度问题
  • 下一篇:JS随机整数的函数
侠客工作室主要承揽网站制作|企业建站|北京网站制作|北京网站建设|北京企业建站|专业仿站|SEO优化等业务
地址:北京市海定区清河水木天成 电话:13718388147 13718388147 传真:13718388147 访问统计:
投诉电话:13718388147 投诉QQ:点击这里给我发消息 客服信箱:1300105556@qq.com 邮编:102200 北京网站建设地图 北京网站建设RSS地图
版权所有 2009-2014侠客工作室【北京网站建设】 京ICP备11021494号-1