package ar.com.javacuriosities.networking;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
/*
* Cuando hablamos de Network Interface nos referimos al punto de conexión
* entre la computadora y una red publica o privada.
* Para poder lograr esto utilizaremos NIC (Network Interface Card) las cuales
* pueden ser físicas o virtuales, el ejemplo mas conocido de esto es el loopback
* IPv4 --> 127.0.0.1
* IPv6 --> ::1
*
* La clase NetworkInterface nos permite acceder a las distintas NIC de nuestra
* PC, además se permite una agrupación jerárquica por medio de los métodos getParent() y getSubInterfaces().
*
* Las NIC tienen su propia dirección --> Media Access Control (MAC)
*
*/
public class Step3NetworkInterface {
public static void main(String[] args) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface
.getNetworkInterfaces();
for (NetworkInterface networkInterface : Collections
.list(networkInterfaces)) {
displayNetworkInterfaceInformation(networkInterface);
displayInetAddresses(networkInterface);
displaySubInterfaces(networkInterface);
}
} catch (SocketException e) {
// Log and Handle exception
e.printStackTrace();
}
}
private static void displayNetworkInterfaceInformation(
NetworkInterface networkInterface) throws SocketException {
System.out
.println("Display name: " + networkInterface.getDisplayName());
System.out.println("Name: " + networkInterface.getName());
System.out.println("Up: " + networkInterface.isUp());
System.out.println("Loopback: " + networkInterface.isLoopback());
System.out
.println("PointToPoint: " + networkInterface.isPointToPoint());
System.out.println("Supports multicast: "
+ networkInterface.supportsMulticast());
System.out.println("Virtual: " + networkInterface.isVirtual());
System.out.println("Hardware address: "
+ Arrays.toString(networkInterface.getHardwareAddress()));
System.out.println("MTU: " + networkInterface.getMTU());
}
private static void displayInetAddresses(NetworkInterface networkInterface) {
Enumeration<InetAddress> inetAddresses = networkInterface
.getInetAddresses();
for (InetAddress inetAddress : Collections.list(inetAddresses)) {
System.out.println("\tInet Address: " + inetAddress);
}
System.out.println("*******************");
}
private static void displaySubInterfaces(NetworkInterface networkInterface)
throws SocketException {
Enumeration<NetworkInterface> subNetworkInterfaces = networkInterface
.getSubInterfaces();
for (NetworkInterface subIf : Collections.list(subNetworkInterfaces)) {
System.out.println("\tSub Interface Display name: "
+ subIf.getDisplayName());
System.out.println("\tSub Interface Name: " + subIf.getName());
}
}
}