…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 đ