我在使用Java获取每个IP地址时遇到问题。当我打开GUI选择要使用的IP时,我会调用:
private List<String> getIP() {
List<String> outputList = new ArrayList<String>();
try {
InetAddress localIP = InetAddress.getLocalHost();
InetAddress[] everyIPAddress = InetAddress.getAllByName(localIP
.getCanonicalHostName());
if (everyIPAddress != null && everyIPAddress.length > 1) {
for (int i = 0; i < everyIPAddress.length; i++) {
if (!everyIPAddress[i].toString().contains(":")) {
outputList.add(everyIPAddress[i].toString());
}
}
}
} catch (UnknownHostException e) {
System.out.println("Error finding IP Address");
}
return outputList;
}
此方法获取客户端具有的所有IPv4地址。我知道IPv6地址包含冒号,因此我不会在列表中添加任何带有冒号的地址。
然后,按按钮更改IP地址。但是,我注意到,当计算机只有一个IPv4地址时(从具有Hamachi之类的服务中可以获得两个),它将返回空异常。如果只有一个地址,我该如何获取客户端的每个IP地址而不返回空异常?
最佳答案
if (everyIPAddress != null && everyIPAddress.length > 1) {
应该
if (everyIPAddress != null && everyIPAddress.length >= 1) {
要么
if (everyIPAddress != null && everyIPAddress.length > 0) {