NetworkInterface
オブジェクトが物理NICであり、NICのソフトウェア/エミュレーションではないことを特定する方法を教えてください。NetworkInterfaceオブジェクトが物理NICであるかどうかを確認するには
理論的にはこれが物理インターフェイスかどうかを伝える方法があることはわかっていますが、NetworkInterface#isVirtual
とNetworkInterface#getParent
があります。
しかし、これらの方法を使用すると私はo/p以下になり、127.0.0.1
はループバックソフトウェアインターフェイスですので、これは私に正解です。
何か不足していますか?
コード:
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netIf : Collections.list(nets)) {
System.out.printf("Display name: %s\n", netIf.getDisplayName());
System.out.printf("Name: %s\n", netIf.getName());
System.out.printf("Up? %s\n", netIf.isUp());
System.out.printf("Loopback? %s\n", netIf.isLoopback());
System.out.printf("PointToPoint? %s\n", netIf.isPointToPoint());
System.out.printf("Supports multicast? %s\n", netIf.supportsMulticast());
System.out.printf("Virtual? %s\n", netIf.isVirtual());
System.out.printf("Hardware address: %s\n", Arrays.toString(netIf.getHardwareAddress()));
System.out.printf("MTU: %s\n", netIf.getMTU());
System.out.printf("Parent: %s\n", netIf.getParent());
System.out.println("InetAddress:");
Enumeration<InetAddress> inetAddresses = netIf.getInetAddresses();
int count = 1;
for(InetAddress inetAddress : Collections.list(inetAddresses)){
System.out.println("\tInetAddress #" + count);
printInetAddressInfo(inetAddress, "\t\t");
count++;
}
System.out.println("SubInterfaces:");
displaySubInterfaces(netIf);
netIf = null;
System.out.printf("\n");
}
結果:
Display name: Software Loopback Interface 1
Name: lo
Up? true
Loopback? true
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1
Parent: null
InetAddress:
InetAddress #1
inetAddress: /127.0.0.1
InetAddress #2
inetAddress: /0:0:0:0:0:0:0:1
SubInterfaces:
詳細情報をありがとうございます。ですから、指定されたインターフェースが物理的なNICであるかどうかを識別できるAPIを使用していますか? – hagrawal
AFAIK、no。あなたは 'isLoopback()'と 'isVirtual()'を一緒に使うことができます。 (ここでの1つの問題は、OS自体が、NICが本当に物理的なものかどうか、例えば仮想化されたプラットフォーム上にあるのかどうかを知りません。)しかし、なぜNICが「物理的」なのかを知る必要があります。 –
私はテスト環境を持っています。サーバー(Linuxボックス)では、2つのFQDNを使用してアクセスできます。つまり、 'abc-sit.xyz.ca'と' abc-sit2.xyz 'としましょう。そのシステムが2つのNICを持っているのか1つだけあるのか、もう1つは単なるソフトウェアインタフェースであるのかを知りたかったのです。 – hagrawal