Obtenir "l'état du média" des cartes réseau dans Windows à l'aide de java?


Comment puis-je obtenir l'état du support d'une carte réseau sous Windows? J'ai cherché un peu et il ne semble pas que la classe java.net.NetworkInterface offre cette capacité, ce qui est logique car il semble être un concept Windows qui ne s'applique même pas à tous les adaptateurs. Lorsque je lance ipconfig, j'obtiens quelque chose comme ce qui suit:

Windows IP Configuration


Wireless LAN adapter Wireless Network Connection 5:

   Connection-specific DNS Suffix  . : BlahBlah.Blah
   IPv4 Address. . . . . . . . . . . : 192.168.113.44
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.113.1

Ethernet adapter Local Area Connection 8:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : BlahBlah.Blah

Et si j'utilise le script trouvé à Quelqu'un peut-il expliquer pourquoi Java GetNetworkInterfaces renvoie autant d'interfaces sur Windows 7 pour obtenir détails de ces adaptateurs (avec les autres supprimés) j'obtiens quelque chose comme ce qui suit:

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: Intel(R) 82579LM Gigabit Network Connection #2
Name: eth13
InetAddress: /172.16.4.29
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: [60, -105, 14, -77, -123, 110]
MTU: 1500

Display name: Intel(R) Centrino(R) Advanced-N 6205 #3
Name: net11
InetAddress: /192.168.113.44
Up? false
Loopback? false
PointToPoint? false
Supports multicast? true
Virtual? false
Hardware address: [60, -105, 14, -77, -123, 110]
MTU: 1500

Réflexions sur la façon dont je peux déterminer si l'adaptateur Ethernet est"déconnecté"?

Author: Community, 2013-10-16

1 answers

Vous pouvez prendre référence à l'extrait ci-dessous. Fondamentalement !networkInterface.isUp() devrait faire l'affaire pour vous.

List<NetworkInterface> nic = new ArrayList<>();
interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
    NetworkInterface networkInterface = interfaces.nextElement();
    if (!networkInterface.isUp())
        continue;
    nic.add(networkinterface);
}
 1
Author: Manish Singh, 2017-04-06 00:56:10