Wie lassen sich die Netzwerkdaten des aktuellen Rechners auslesen? v.5.0
Die Methode getOwnerHostName()
liefert den
Netzwerknamen des Rechners, auf dem sie ausgeführt wird. Sie
ermittelt zunächst über die statische Methode getLocalHost()
die Netzwerk-Adresse des Localhosts als InetAddress
-Object. Auf diesem aufgerufen liefert getHostName()
dann den String des entsprechenden Netzwerknamens.
Die Methode wird in der Beispielklasse in printAllOwnerMacs()
verwendet, um ein Array der IP-Adressen auszulesen. Sie liefert den
Parameter der statischen Methode getAllByName()
. Das
Array speichert die IPv4- und IPv6-Adressen, die als String mittels
getHostAddress()
dargestellt werden können.
Die Methode getOwnerNetworkDeviceName()
liefert den
Device-Namen des z.Zt. aktiven Netzwerk-Interfaces. Besteht keine
Netzwerkverbindung, so wird der Name des Loopback-Device zurück
gegeben. Die Methode bedient sich der Klasse NetworkInterface
, die nach Übergabe der aktuellen IP an die statische Methode getByInetAddress()
das NetworkInterface
-Objekt liefert, dessen Name durch
getDisplayName()
ermittelt werden kann.
Auch die Methode getOwnerMac()
bedient sich der
Klasse NetworkInterface
und liefert die Hardware-
(=Mac-) Adresse des aktiven Device. Wie oben wird hierzu
zunächst das Netzwerkinterface ermittelt, dessen
Hardware-Adresse dann als Byte-Array durch die Methode getHardwareAddress()
zurückgegeben wird. Um eine String-Repräsentation zu
erhalten, wird das Array durchlaufen, die einzelnen Werte in das
Hexadezimal-Format konvertiert und durch einen Doppelpunkt getrennt
aneinander gehängt. Nach Entfernen des letzten Doppelpuntes
kann der String zurück gegeben werden.
GetOwnerIp()
ermittelt die IP des aktuellen
Netzwerkinterfaces durch Aufruf von getHostAdress()
auf
der Netzwerkadresse des lokalen Hosts.
import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Collections;
public class NetworkUtil {
public void printAllOwnerMacs() {
InetAddress[] ias;
try {
ias = InetAddress.getAllByName(getOwnerHostName());
if (ias != null)
for (InetAddress ia : ias) {
System.out.println(ia.getHostAddress());
}
} catch (UnknownHostException e) {
System.err.println("Unbekannter Hostname");
}
}
public String getOwnerHostName() {
try {
return InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return null;
}
public String getOwnerNetworkDeviceName() {
try {
NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress
.getLocalHost());
if (ni != null)
return ni.getDisplayName();
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return null;
}
public String getOwnerMac() {
try {
NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress
.getLocalHost());
byte[] hwa = ni.getHardwareAddress();
if (hwa == null)
return null;
String mac = "";
for (int i = 0; i < hwa.length; i++) {
mac += String.format("%x:", hwa[i]);
}
if (mac.length() > 0 && !ni.isLoopback()) {
return mac.toLowerCase().substring(0, mac.length() - 1);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return null;
}
public String getOwnerIp() {
try {
return InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
NetworkUtil nu = new NetworkUtil();
nu.printAllOwnerMacs();
System.out.println("Host-Name: " + nu.getOwnerHostName());
System.out.println("Device-Name: " + nu.getOwnerNetworkDeviceName());
System.out.println("Mac-Adresse: " + nu.getOwnerMac());
System.out.println("IP: " + nu.getOwnerIp());
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.