इस विधि का प्रयास करें:
public static boolean sameNetwork(String ip1, String ip2, String mask)
throws Exception {
byte[] a1 = InetAddress.getByName(ip1).getAddress();
byte[] a2 = InetAddress.getByName(ip2).getAddress();
byte[] m = InetAddress.getByName(mask).getAddress();
for (int i = 0; i < a1.length; i++)
if ((a1[i] & m[i]) != (a2[i] & m[i]))
return false;
return true;
}
और इस तरह इसका इस्तेमाल:
sameNetwork("1.2.3.4", "1.2.4.3", "255.255.255.0")
> false
संपादित करें:
आप पहले से ही आईपी के रूप में InetAddress
वस्तुओं है:
public static boolean sameNetwork(InetAddress ip1, InetAddress ip2, String mask)
throws Exception {
byte[] a1 = ip1.getAddress();
byte[] a2 = ip2.getAddress();
byte[] m = InetAddress.getByName(mask).getAddress();
for (int i = 0; i < a1.length; i++)
if ((a1[i] & m[i]) != (a2[i] & m[i]))
return false;
return true;
}
स्रोत
2011-12-19 00:15:14
लेकिन मुखौटा कैसे प्राप्त करें? और यह आईपीवी 6 के लिए भी काम करता है? – xZise
@xZise मास्क आपका सबनेट मास्क है। और यकीन है कि यह आईपीवी 6 के लिए ठीक काम करेगा - आईपीवी 4 की तुलना में बस एक अलग संकेत। लेकिन अंत में आप आईपी के नेटवर्क हिस्से को मुखौटा करने के लिए बस सबनेट मास्क का उपयोग करें और फिर एक-दूसरे के साथ तुलना करें। – Voo
लेकिन प्रोग्राम से सबनेट मास्क कैसे प्राप्त करें? – xZise