Java ですべての IP アドレスを取得する際に問題が発生しています。使用する IP を選択するために GUI を開くと、次のように呼び出します。
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 アドレスが 1 つしかない場合 (Hamachi のようなサービスを使用すると 2 つ取得できます)、null 例外が返されることに気付きました。アドレスが 1 つしかない場合、null 例外を返さずにクライアントのすべての IP アドレスを取得するにはどうすればよいですか?