子網掩碼的獲取和判斷

int mask = ifAddr.getNetworkPrefixLength();
StringBuilder maskStr = new StringBuilder();
int[] maskIp = new int[4];
for (int i=0; i<maskIp.length; i++) {
    maskIp[i] = (mask >= 8) ? 255 : (mask > 0 ? (mask & 0xff) : 0);
    mask -= 8;
    maskStr.append(maskIp[i]);
    if (i < maskIp.length-1) {
        maskStr.append(".");
    }
}

判斷兩個IP是否在一個網段:

分別拿兩個IP和子網掩碼進行與操作,得到的結果若相同,則可以通信

int clientIpFirstPlace = Integer.parseInt(ClientIp[0]);
int clientIpSecondPlace = Integer.parseInt(ClientIp[1]);
int clientIpThirdPlace = Integer.parseInt(ClientIp[2]); 	
int clientIpFourthPlace = Integer.parseInt(ClientIp[3]);

int localIpFirstPlace = Integer.parseInt(localIp[0]); 	    			   	    			
int localIpSecondPlace = Integer.parseInt(localIp[1]);	    			
int localIpThirdPlace = Integer.parseInt(localIp[2]);	   			
int localIpFourthPlace = Integer.parseInt(localIp[3]);

boolean maskFirstEqual = ((clientIpFirstPlace & maskIp[0]) == (localIpFirstPlace & maskIp[0]));
boolean maskSecondEqual = ((clientIpSecondPlace & maskIp[1]) == (localIpSecondPlace & maskIp[1]));
boolean maskThirdEqual = ((clientIpThirdPlace & maskIp[2]) == (localIpThirdPlace & maskIp[2]));
boolean maskFourthEqual = ((clientIpFourthPlace & maskIp[3]) == (localIpFourthPlace & maskIp[3]));

if(maskFirstEqual && maskSecondEqual && maskThirdEqual && maskFourthEqual) {
    ...
    ...
    ...
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章