<AI>
JavaFX環境(実体はJava)で、使用しているネットワーク環境がIPv4かIPv6かを判断するには、
標準ライブラリの java.net.InetAddress や NetworkInterface を使用します。
Javaはデフォルトで両方をサポートするデュアルスタックで動作するため、取得したIPアドレスのインスタンス型を確認します。
判定方法の基本
・InetAddress.getLocalHost() または NetworkInterface を使ってIPアドレスを取得します。
・取得したオブジェクトが Inet4Address か Inet6Address かを instanceof 演算子で判別します。
実装コード例(JavaFXのアクション内など)
java
import java.net.*;
import java.util.Enumeration;
public class IpChecker {
public static void checkIpVersion() {
try {
// 基本的な判別
InetAddress addr = InetAddress.getLocalHost();
if (addr instanceof Inet4Address) {
System.out.println("IPv4: " + addr.getHostAddress());
} else if (addr instanceof Inet6Address) {
System.out.println("IPv6: " + addr.getHostAddress());
}
// 全インタフェース走査(詳細)
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
for (InetAddress a : Collections.list(interfaces.nextElement().getInetAddresses())) {
if (a instanceof Inet4Address) System.out.println("IPv4 detected: " + a.getHostAddress());
else if (a instanceof Inet6Address) System.out.println("IPv6 detected: " + a.getHostAddress());
}
}
} catch (Exception e) { e.printStackTrace(); }
}
}
注意点
・近年の環境はIPv4/IPv6のデュアルスタックが主流であり、複数のIPアドレスが取得されます。
・Java起動オプション -Djava.net.preferIPv4Stack=true でIPv4を強制可能