【发布时间】:2017-04-08 11:18:28
【问题描述】:
当每个数组中只有一个条目时,以下方法可以正常工作,否则会导致IllegalArgumentException:
String[] defaultGWs = {"10.0.0.138, 10.0.0.138"};
String[] interfacesNetmasks = {"255.255.255.0, 255.255.255.0"};
for (String defaultGW: defaultGWs) {
for (String interfacesNetmask: interfacesNetmasks) {
SubnetInfo subnetInfo = (new SubnetUtils(defaultGW, interfacesNetmask).getInfo());
// CIDR signature
String cidrSignature = subnetInfo.getCidrSignature();
System.out.println("CIDR Signature: " + cidrSignature);
}
例外:
Exception in thread "main" java.lang.IllegalArgumentException: Could not parse [255.255.255.0, 255.255.255.0]
at org.apache.commons.net.util.SubnetUtils.toInteger(SubnetUtils.java:287)
at org.apache.commons.net.util.SubnetUtils.toCidrNotation(SubnetUtils.java:360)
at org.apache.commons.net.util.SubnetUtils.<init>(SubnetUtils.java:62)
at GetSubnetInfoJava.main(GetSubnetInfoJava.java:13)
如何并行遍历大量网关和网络掩码,以便在每次迭代时生成一个新的子网信息对象?
【问题讨论】:
-
将 { "10.0.0.138, 10.0.0.138" } 更改为 { "10.0.0.138","10.0.0.138" } 与 interfacesNetmasks 相同。
-
或者最好使用
Map<String,String>来保持您的 IP 和网络掩码附加到它们,尤其是在 IP 不同等情况下。