我想知道是否有任何方法可以爆炸CIDR格式的IP。除了爆炸这个代码应该考虑'排除'功能也。
确切地说,我想要的东西需要172.21.3.128/30(包含清单:172.21.3.128/30)并返回
如果它有排除列表为' 172.21.3.130'(包含列表:172.21.3.128 / 30&排除列表:172.21.3.130)那么它应该返回
目前我爆炸包含列表&保持设置和爆炸排除列表&保持在set.And采取两个区别。这种方法的问题是我必须将所有爆炸的IP保留在内存中,如果范围非常大,可能会产生问题(outofmemoryerror)。
答案 0 :(得分:2)
至于包含列表,您可以使用SubnetUtils类的Apache Commons Net来获取所有地址,例如:
String subnet = "192.168.0.0/24";
SubnetUtils utils = new SubnetUtils(subnet);
String[] addresses = utils.getInfo().getAllAddresses();
但看起来,在这种情况下你需要自己排除,因为在这样的工具中它并没有被天真地支持。因此,您可以简单地对所有地址进行收集,并从中删除所有应排除的地址。