3

私はNetworkInterface.getNetworkInterfaces() 自分のマシンのネットワークインターフェイスを照会するために使用しています。基本的に、私はネットワークインターフェイスカードを見つけようとしています。これらは通常、eth0、eth1などと呼ばれます。

それは、win xpや、わずかなフィルタリングを備えたビスタでもうまく機能しています。

Windows 7の特定の構成で、リストされているネットワークアダプターが多数あることに気づきました。xpやvistaよりもはるかに。カードを1つだけ構成しましたが、3つの異なるネットワークインターフェイスを使用しているようです

  • Intel(R)82567LM-3ギガビットネットワーク接続
  • Intel(R)82567LM-3ギガビットネットワーク接続-QoSパケットスケジューラ-0000
  • Intel(R)82567LM-3ギガビットネットワーク接続-WFP LightWeight Filter-0000

本質的に同じものに対してなぜ3つの異なるポイント。

また、WANMINIPORTと呼ばれるものの6つのエントリがあります。(出力については以下を参照してください)

これらを除外することはできますが、もちろん、多くのがらくたを通過することにはパフォーマンスコストがかかります。これらのエントリが作成される理由とそれらを最小化する方法を誰かが知っていますか?

私のシステムの例として、私はこのようなコードを書きました

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;

import static java.lang.System.out;


public class ListNetsEx {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Enumeration<NetworkInterface> nets;
        try {
            nets = NetworkInterface.getNetworkInterfaces();
            for (NetworkInterface netint : Collections.list(nets))
                displayInterfaceInformation(netint);
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private static void displayInterfaceInformation(NetworkInterface netint) throws SocketException {
        // TODO Auto-generated method stub
        out.printf("Display name: %s\n", netint.getDisplayName());
        out.printf("Name: %s\n", netint.getName());
        Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();

        for (InetAddress inetAddress : Collections.list(inetAddresses)) {
            out.printf("InetAddress: %s\n", inetAddress);
        }

        out.printf("Up? %s\n", netint.isUp());
        out.printf("Loopback? %s\n", netint.isLoopback());
        out.printf("PointToPoint? %s\n", netint.isPointToPoint());
        out.printf("Supports multicast? %s\n", netint.supportsMulticast());
        out.printf("Virtual? %s\n", netint.isVirtual());
        out.printf("Hardware address: %s\n",
                    Arrays.toString(netint.getHardwareAddress()));
        out.printf("MTU: %s\n", netint.getMTU());

        out.printf("\n");

    }

}

Windows7の出力は

表示名:Software Loopback Interface 1
名前:lo
InetAddress:/ 0:0:0:0:0:0:0:1
InetAddress:/ 127.0.0.1
上?true
ループバック?true
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:[]
MTU:-1

表示名:WANミニポート(SSTP)
名前:net0
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(IKEv2)
名前:net1
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(L2TP)
名前:net2
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(PPTP)
名前:net3
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(PPPOE)
名前:ppp0
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(IPv6)
名前:eth0
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(ネットワークモニター)
名前:eth1
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(IP)
名前:eth2
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:RAS非同期アダプター
名前:ppp1
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:Intel(R)82567LM-3ギガビットネットワーク接続
名前:eth3
InetAddress:/ fe80:0:0:0:b1b1:7531:17b1:bf26%11
InetAddress:/172.24.9.148
上?true
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:[120、43、-53、125、-80、74]
MTU:1500

表示名:MicrosoftISATAPアダプター
名前:net4
上?false
ループバック?false
ポイントからポイントへ?true
マルチキャストをサポートしますか?false
バーチャル?false
ハードウェアアドレス:[0、0、0、0、0、0、0、-32]
MTU:1280

表示名:Teredoトンネリング疑似インターフェース
名前:net5
InetAddress:/ fe80:0:0:0:e0:0:0:0%13
上?false
ループバック?false
ポイントからポイントへ?true
マルチキャストをサポートしますか?false
バーチャル?false
ハードウェアアドレス:[0、0、0、0、0、0、0、-32]
MTU:1280

表示名:Microsoft ISATAPアダプター#2
名前:net6
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:Intel(R)82567LM-3ギガビットネットワーク接続-QoSパケットスケジューラ-0000
名前:eth4
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:Intel(R)82567LM-3ギガビットネットワーク接続-WFP LightWeight Filter-0000
名前:eth5
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(ネットワークモニター)-QoSパケットスケジューラ-0000
名前:eth6
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(IP)-QoSパケットスケジューラ-0000
名前:eth7
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1

表示名:WANミニポート(IPv6)-QoSパケットスケジューラ-0000
名前:eth8
上?false
ループバック?false
ポイントからポイントへ?false
マルチキャストをサポートしますか?true
バーチャル?false
ハードウェアアドレス:null
MTU:-1
4

1 に答える 1

3

Windows では、内部使用のために多くのインターフェイスが定義されています。Java は、OS が提供するものを返すだけで、Java によって追加されるものはありません。

Windows レジストリで、これらすべてのデバイスのエントリを見つけることができるはずです。

于 2011-05-10T17:42:08.810 に答える