谁能解释为什么Java GetNetworkInterfaces在Windows 7上会返回如此多的接口 [英] Can anyone explain why Java GetNetworkInterfaces returns so many interfaces on Windows 7

查看:120
本文介绍了谁能解释为什么Java GetNetworkInterfaces在Windows 7上会返回如此多的接口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在使用NetworkInterface.getNetworkInterfaces() 查询我机器上的网络接口.本质上,我正在尝试查找网络接口卡.这些通常称为eth0,eth1等.

I have been using NetworkInterface.getNetworkInterfaces() to query the Network Interfaces on my machine. Essentially I am trying to find Network Interface Cards. These are usually called something like eth0, eth1 etc..

它在win xp甚至是带有一点过滤的vista上都表现出色.

Its been working great on win xp and even vista with a litle filtering.

我刚刚在Windows 7的某些配置中注意到,我得到了大量列出的网络适配器.远不止XP和Vista.我只配置了一张卡,但似乎得到了三个不同的网络接口

I just noticed in certain configurations of windows 7 I get a large number of listed network adapters. Way more than on xp and vista. I have only one card configured but seem to get three different network interfaces

  • 英特尔(R)82567LM-3千兆网络连接
  • Intel(R)82567LM-3千兆网络连接-QoS数据包调度程序-0000
  • 英特尔(R)82567LM-3千兆网络连接-WFP轻型过滤器-0000

为什么3个不同的点本质上是同一件事.

Why 3 different points for essentially the same thing.

对于WAN MINIPORT,我还有六个条目. (有关输出,请参见下文)

I also have six entries for something called WAN MINIPORT. (See below for output)

我可以过滤掉这些,但是经过这么多废话当然会降低性能.有谁知道为什么创建这些条目以及如何最小化它们?

I can filter out these but of course there is a performance cost in going through so much crap. Does anyone know why these entries are created and how to minimise them ?

作为我系统上的一个示例,我编写了这样的代码

As an example on my system I wrote code like this

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");

    }

}

在Windows 7上的输出是

On windows 7 output is


Display name: Software Loopback Interface 1
Name: lo
InetAddress: /0:0:0:0:0:0:0:1
InetAddress: /127.0.0.1
Up? true
Loopback? true
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: []
MTU: -1

Display name: WAN Miniport (SSTP)
Name: net0
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (IKEv2)
Name: net1
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (L2TP)
Name: net2
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (PPTP)
Name: net3
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (PPPOE)
Name: ppp0
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (IPv6)
Name: eth0
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (Network Monitor)
Name: eth1
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (IP)
Name: eth2
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: RAS Async Adapter
Name: ppp1
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: Intel(R) 82567LM-3 Gigabit Network Connection
Name: eth3
InetAddress: /fe80:0:0:0:b1b1:7531:17b1:bf26%11
InetAddress: /172.24.9.148
Up? true
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: [120, 43, -53, 125, -80, 74]
MTU: 1500

Display name: Microsoft ISATAP Adapter
Name: net4
Up? false
Loopback? false
PointToPoint? true
Supports multicast? false
Virtual? false
Hardware address: [0, 0, 0, 0, 0, 0, 0, -32]
MTU: 1280

Display name: Teredo Tunneling Pseudo-Interface
Name: net5
InetAddress: /fe80:0:0:0:e0:0:0:0%13
Up? false
Loopback? false
PointToPoint? true
Supports multicast? false
Virtual? false
Hardware address: [0, 0, 0, 0, 0, 0, 0, -32]
MTU: 1280

Display name: Microsoft ISATAP Adapter #2
Name: net6
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: Intel(R) 82567LM-3 Gigabit Network Connection-QoS Packet Scheduler-0000
Name: eth4
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: Intel(R) 82567LM-3 Gigabit Network Connection-WFP LightWeight Filter-0000
Name: eth5
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
Name: eth6
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (IP)-QoS Packet Scheduler-0000
Name: eth7
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

Display name: WAN Miniport (IPv6)-QoS Packet Scheduler-0000
Name: eth8
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: null
MTU: -1

推荐答案

Windows定义了许多内部使用的接口. Java只是返回操作系统告诉它的内容,Java都不添加这些内容.

Windows defines many interfaces for internal use. Java just returns what the OS tell gives it, none of these are added by Java.

您应该能够在Windows注册表中找到所有这些设备的条目.

You should be able to find entries for all these devices in the Windows Registry.

这篇关于谁能解释为什么Java GetNetworkInterfaces在Windows 7上会返回如此多的接口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆