使用JavaScript验证网络参数(IP,子网掩码,网关)是否正确! | 马犇-技术博客

使用JavaScript验证网络参数(IP,子网掩码,网关)是否正确!

来源:本站原创 其它, 原创, 网页设计 超过13,224 views围观 1条评论

首先要明白这三者的关系,如果IP地址和子网掩码的位与运算等于子网掩码与网关的位与运算,则说明在同一网段内,反之则不是,网页中用到,下面是验证程序:

/*
 * 功能:实现IP地址,子网掩码,网关的规则验证
 * 参数:IP地址,子网掩码,网关
 * 返回值:BOOL
 * design by maben  2013.9.4
 */
var validateNetwork = function(ip,netmask,gateway){
	var parseIp = function(ip){
		return ip.split(".");
	}
	var conv = function(num){
		var num = parseInt(num).toString(2);
		while((8-num.length) > 0)num = "0"+num;
		return num;
	}
	var bitOpera = function(ip1,ip2){
		var result = '',binaryIp1 = '',binaryIp2 = '';
		for(var i = 0; i < 4; i++){
			if(i != 0)result += ".";
			for(var j = 0; j < 8; j++){
				result += conv(parseIp(ip1)[i]).substr(j,1) & conv(parseIp(ip2)[i]).substr(j,1)
			}
		}
		return result;
	}
	var ip_re = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
	if (ip == null || netmask == null || gateway == null) {
		return false;
	}
	if (!ip_re.test(ip) || !ip_re.test(netmask) || !ip_re.test(gateway)) {
		return false
	}
	return bitOpera(ip,netmask) == bitOpera(netmask,gateway);
}