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..
Its been working great on win xp and even vista with a litle filtering.
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
- Intel(R) 82567LM-3 Gigabit Network Connection
- Intel(R) 82567LM-3 Gigabit Network Connection-QoS Packet Scheduler-0000
- Intel(R) 82567LM-3 Gigabit Network Connection-WFP LightWeight Filter-0000
Why 3 different points for essentially the same thing.
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");
}
}
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