0

自分の PC の正しい SubnetMask を見つけるのに問題があるため、書いています。Java を使用してローカル システムのサブネット マスクを取得する方法という質問を既に読みました。しかし、私が試してみると:

InetAddress thiscomputer = InetAddress.getLocalHost();
NetworkInterface thisNetworkInterface = NetworkInterface.getByInetAddress(thiscomputer);
int thiscomputerSubnetMask = thisNetworkInterface.getInterfaceAddresses().get(0).getNetworkPrefixLength();
System.out.println("This pc subnetmask: "+thiscomputerSubnetMask);

64 と書き込みます。オブジェクトthisNetworkInterface.getInterfaceAddresses()にはあと 1 つの要素しかなく、128 です。

現在、ipv4 プロトコルで使用できる番号を探しています。実際のサブネット マスクは 255.255.255.240 であるため、16 (256-240) を探していますが、取得できません。私が知っている方法。

また、64 や 128 が何を表しているかもわかりません! 誰でも私を助けることができますか?

4

1 に答える 1

1

以下のコードを使用して、/ 64からのアドレスを確認してください(答えはあなたを驚かせるでしょう)。答えは、.getInterfaceAddresses()。get(0)は拡張可能ではなく、常に期待している答えを返さない可能性があるということです。

InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);

for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
    System.out.println(address.getAddress() + "/" + address.getNetworkPrefixLength());
}

編集:これが私のマシン(Mac)からの出力です。

/fe80:0:0:0:5ab0:35ff:fe6e:cdc3%6/64
/172.31.255.21/28
于 2011-07-02T13:41:55.773 に答える