JAVASCRIPT实现子网划分

 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
   
    <script language="javascript" type="text/javascript">
    /*
    计算可用IP段
    */
    function getIPs()
    {
        var zjip=document.getElementById("zjip");
        var zjdz=document.getElementById("zjdz");
        var ymws=document.getElementById("ymws");
        if(validateIP(zjip.value))
        {
            if(validateMask(parseInt(ymws.value,10)))
            {
                //显示主机IP得二进制
                var ipaddress = zjip.value.split(".");
                var intipaddress=new Array(4);
                intipaddress[0]= Number(ipaddress[0]);
                intipaddress[1]= Number(ipaddress[1]);
                intipaddress[2]= Number(ipaddress[2]);
                intipaddress[3]= Number(ipaddress[3]);
               
               var zjip_e=left0(intipaddress[0].toString(2))+left0(intipaddress[1].toString(2))+left0(intipaddress[2].toString(2))+left0(intipaddress[3].toString(2));
               zjdz.innerHTML=zjip_e;        
              
               //显示子网掩码
               var ym=maskNum(parseInt(ymws.value));
               zwym.innerHTML=ym;
              
               zwdz.innerHTML=getzwdz(zjip_e,ym);
                    
               //起始IP
               var qsip1=left0((parseInt(zwdz.innerHTML.substr(0,8),2)).toString(2));
               var qsip2=left0((parseInt(zwdz.innerHTML.substr(8,8),2)).toString(2));
               var qsip3=left0((parseInt(zwdz.innerHTML.substr(16,8),2)).toString(2));
               var qsip4=left0((parseInt(zwdz.innerHTML.substr(24,8),2)+1).toString(2));
              
               IP1.innerHTML=parseInt(qsip1,2).toString(10)+"."+parseInt(qsip2,2).toString(10)+"."+parseInt(qsip3,2).toString(10)+"."+parseInt(qsip4,2).toString(10);
              
               var gb=gbdz(zwdz.innerHTML,ym);
               var zzip1=left0((parseInt(gb.substr(0,8),2)).toString(2));
               var zzip2=left0((parseInt(gb.substr(8,8),2)).toString(2));
               var zzip3=left0((parseInt(gb.substr(16,8),2)).toString(2));
               var zzip4=left0((parseInt(gb.substr(24,8),2)-1).toString(2));
              
               IP2.innerHTML=parseInt(zzip1,2).toString(10)+"."+parseInt(zzip2,2).toString(10)+"."+parseInt(zzip3,2).toString(10)+"."+parseInt(zzip4,2).toString(10);

            }
            else
            {
                alert('掩码位数是不大于32的正整数!');               
            }       
        }
        else
        {
        alert('请输入正确得IP地址!');
        }       
    }
   
   function getzwdz(strZJ,strYM)
   {   
        var i=0;
        var zwdz="";
        while(i!=32)
        {
            if(strZJ.substr(i,1)==strYM.substr(i,1)&&strZJ.substr(i,1)=="1")
            {
                zwdz=zwdz+"1";               
            }
            else
            {
                zwdz=zwdz+"0";                   
            }
            i=i+1;                       
        }
        return zwdz;
   }
   
   function gbdz(strZW,strYM)
   {   
        var i=0;
        var gbdz="";
        while(i!=32)
        {
            if(strZW.substr(i,1)==strYM.substr(i,1))
            {
                gbdz=gbdz+"1";               
            }
            else
            {
                gbdz=gbdz+"0";                   
            }
            i=i+1;                       
        }
        return gbdz;
   }
   
    function left0(num)
    {
        while(num.length!=8)
        {
            num="0"+num;
        }
        return num;
    }
   
    /*
    验证主机IP是否合法   
    */
    function validateIP(strIP)
    {
        var re=/^(/d+)/.(/d+)/.(/d+)/.(/d+)$/g
        if(re.test(strIP))
        {
            if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;
        }
        return false;
    }
   
    /*
    验证掩码位数是否合法
    */
    function validateMask(intNum)
    {
        if(intNum>0&&intNum<33)
        return true;
        else
        return false;
    }
   
    /*
    计算子网掩码
    */
    function maskNum(num)
{
    var mask="";
    while(mask.length!=num)
    {
        mask="1"+mask;
    }
  
   while(mask.length!=32)
    {
        mask=mask+"0";
    }
    return mask;
}
    </script>
   
</head>
<body>
    主 机 IP:<input id="zjip" type="text" /><br />
    <br />
    掩码位数:<input id="ymws" type="text" /><br />
    <br />
    <input id="Button1" type="button" value="button" οnclick="getIPs()" /><br />
    <br />
    主机地址:<label id="zjdz"></label><br />
    子网掩码:<label id="zwym"></label><br />
    子网地址:<label id="zwdz"></label><br />
    可用IP:<label id="IP1"></label>到<label id="IP2"></label>
</body>
</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值