…benutzt man so einen Namen und Adresse: „Jesus Bolenbaugh <plato@ssl.stu.neva.ru>“ đ
Tag Archives: Adresse
Wie man in Java die lokale IP ermittelt
Da das Ermitteln der lokalen IPs ĂŒber alle Interface angeblich Voodoo ist, hier mal eine Lösung ohne Voodoo đ
import java.net.InetAddress;
import java.net.NetworkInterface;
try {
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface)networkInterfaces.nextElement();
Enumeration ips = networkInterface.getInetAddresses();
while ( ips.hasMoreElements() ) {
// InetAddress ipa = (InetAddress)ips.nextElement();
String ip = ((InetAddress)ips.nextElement()).toString();
ip = ip.replaceAll("/", "").replaceAll("%.*$","");
... HIER mit der IP was machen ...
}
}
} catch (Exception e) {
e.printStackTrace();
}Eine kleine Anmerkung dazu. Das ist ja der Cast auf InetAddress, es werden an der Stelle aber IPv4 und IPv6 Objekte zurĂŒck gegeben, die sich eben ohne Cast-Fehlermeldung nur als InetAddress verarbeiten lassen. Wenn Ihr wissen wollt, was es ist, ohne eine RegEx ĂŒber das Ergebnis zu legen, lest einfach die Klasse des Objekts aus:
InetAddress ipa = (InetAddress)ips.nextElement();
log( ipa.getClass().getName() );
String ip = ipa.toString().replaceAll("/", "").replaceAll("%.*$","");Anstatt getName() kann man auch getSimpleName() oder getType() benutzen, ganz wie es Euch gefÀllt.
Alternative:
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface)networkInterfaces.nextElement();
for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
String ip = address.getAddress().toString();
int netmask = address.getNetworkPrefixLength();
log( netmask + ip );
ip = ip.replaceAll("/", "").replaceAll("%.*$","");
}
}Da bekommt man auch gleich die Netzwerkmaske mit, ist wohl der bessere Weg đ