【问题标题】:How can I calculate network and broadcast using object IP Address and mask IP Address in jQuery?如何在 jQuery 中使用对象 IP 地址和掩码 IP 地址计算网络和广播?
【发布时间】:2018-04-17 11:00:06
【问题描述】:

对象 IP 地址 = 192.168.0.101

掩码 IP 地址 = 255.255.255.0

网络 = ?

广播 = ?

【问题讨论】:

    标签: networking broadcast


    【解决方案1】:
    var network = calculateNetworkIP("192.168.0.101", "255.255.255.0");
    
    var broadcast = calculateBroadcastIP("192.168.0.101", "255.255.255.0");
    
    function calculateNetworkIP(ipAddress, maskIP){
    
        var binaryIP = convertIPToBinaryIP(ipAddress);
        var maskBinaryIP = convertIPToBinaryIP(maskIP);
    
        var binaryNetwork = [];
        for (var j = 0; j < maskBinaryIP.length; j++) {
            binaryNetwork.push(bitwiseAND(binaryIP[j], maskBinaryIP[j]));
        }
    
        var NetworkIPArr = convertBinaryIPToDecIP(binaryNetwork);
    
        var NetworkIPStr = "";
        for (var k = 0; k < NetworkIPArr.length; k++) {
            NetworkIPStr += NetworkIPArr[k]+".";
        }
        return NetworkIPStr.slice(0, -1);
    }
    
    function calculateBroadcastIP(ipAddress, maskIP){
    
        var binaryIP = convertIPToBinaryIP(ipAddress);
        var maskBinaryIP = convertIPToBinaryIP(maskIP);
        var invertedMark = [];
        for (var i = 0; i < maskBinaryIP.length; i++) {
            invertedMark.push(invertedBinary(maskBinaryIP[i]));
        }
    
        var binaryBroadcast = [];
        for (var j = 0; j < maskBinaryIP.length; j++) {
            binaryBroadcast.push(bitwiseOR(binaryIP[j], invertedMark[j]));
        }
    
        var broadcastIPArr = convertBinaryIPToDecIP(binaryBroadcast);
    
        var broadcastIPStr = "";
        for (var k = 0; k < broadcastIPArr.length; k++) {
            broadcastIPStr += broadcastIPArr[k]+".";
        }
        return broadcastIPStr.slice(0, -1);
    }
    
    function invertedBinary(number){
    
        var no = number+"";
        var noArr = no.split("");
        var newNo = "";
        for(var i = 0; i < noArr.length; i++){
            if(noArr[i] == "0"){
                newNo += "1";
            }else{
                newNo += "0";
            }
        }
        return newNo;
    }
    
    function bitwiseAND(firstBinary, secondBinary){
    
        var firstArr = [];
        var secondArr = [];
        firstArr = firstBinary.split("");
        secondArr = secondBinary.split("");
        var newAdded = "";
        for(var i = 0; i < firstArr.length; i++){
            if(firstArr[i]+"+"+secondArr[i] == "1+0"){
                newAdded += "0";
            }else if(firstArr[i]+"+"+secondArr[i] == "0+1"){
                newAdded += "0";
            }else if(firstArr[i]+"+"+secondArr[i] == "1+1"){
                newAdded += "1";
            }else if(firstArr[i]+"+"+secondArr[i] == "0+0"){
                newAdded += "0";
            }
        }
        return newAdded;
    }
    
    function bitwiseOR(firstBinary, secondBinary){
    
        var firstArr = [];
        var secondArr = [];
        firstArr = firstBinary.split("");
        secondArr = secondBinary.split("");
        var newAdded = "";
        for(var i = 0; i < firstArr.length; i++){
            if(firstArr[i]+"+"+secondArr[i] == "1+0"){
                newAdded += "1";
            }else if(firstArr[i]+"+"+secondArr[i] == "0+1"){
                newAdded += "1";
            }else if(firstArr[i]+"+"+secondArr[i] == "1+1"){
                newAdded += "1";
            }else if(firstArr[i]+"+"+secondArr[i] == "0+0"){
                newAdded += "0";
            }
        }
        return newAdded;
    }
    
    function convertBinaryIPToDecIP(binaryIPArr){
    
        var broadcastIP = [];
        for (var i = 0; i < binaryIPArr.length; i++) {
            broadcastIP.push(parseInt(parseInt(binaryIPArr[i]), 2));
        }
        return broadcastIP;
    }
    
    function convertIPToBinaryIP(ipAddress) {
    
        var ipArr = ipAddress.split(".");
        var binaryIP = [];
        for (var i = 0; i < ipArr.length; i++) {
            var binaryNo = parseInt(ipArr[i]).toString(2);
            if(binaryNo.length == 8){
                binaryIP.push(binaryNo);
            }else{
                var diffNo = 8 - binaryNo.length;
                var createBinary = '';
                for (var j = 0; j < diffNo; j++) {
                   createBinary += '0';
                }
                createBinary += binaryNo;
                binaryIP.push(createBinary);
            }
        }
        return binaryIP; 
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 1970-01-01
      • 2015-05-16
      • 2013-03-03
      • 2010-12-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      相关资源
      最近更新 更多