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) {
...
...
...
}