- 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随机整数的函数