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 🙂

Neues von LAHA

Kleines Update zum kleinen heimischen Audioverteilprojekt. Wie ich hier: Multi-Netzwerk-Lautsprecher mit Linux bereits nach einige Stunden zeigen konnte, klappt das mit dem latenzgleichen Abspielen von Audio im Netz bereits mit Linux Bordmitteln.

Endlich mal wieder was los…

In einer abendlichen Dauerprogrammiersession habe ich in wenigen Stunden eine Client-Server Testsuite gebaut, die bereits funktional ist. Wenn ich von Client rede meine ich die Abspieleinrichtung, die aber als Serverkomponente ausgelegt ist. Bitte merken um Verwirrungen vorzubeugen.

Die Kommunikationsarchitektur kommt auch mit einer rudimentären Anti-kaper-Funktion daher, so daß WLAN Gäste den Clienten nicht übernehmen können. Das beugt z.b. dem Problem vor, daß in einem Netz vielleicht mehr als eine Control-Anwendung läuft. Vielleicht wollen ja die Kinder was anderes hören als die Eltern 😉

Die Kontrolleinheit

Was jetzt noch neben einigen Funktionen fehlt, ist das Kontroll-Center. Das Kontroll-Center sollte ein ansprechendes Äußeres haben, aber ob das mit Swing was wird .. fraglich 😉 Ich lasse mich mal überraschen. Das war ein implizites Ja, wie in Java 😉 Kein rumpliges Python, kein PHP, NodeJs oder Ruby.. Java. Wieso?
A) machts was es soll und B) bekommt Ihr raus, wenn der Source released wird 😀

PS: Wofür LAHA steht, wird später verraten 😉

Eilmeldung: Führungswechsel beim L-P-D

Wie mir aus sicherer Quelle mitgeteilt wurde, gab es beim Koordinierungsstab des am morgigen Samstag weltweit stattfindenden Linux-Presentation-Day einen kurzfristigen Führungswechsel.

Der bisherige Koordinator Hauke von den Berliner Linuxusern leidet derzeit an einer ausgeprägten Kontaktschwäche, aka. ist nicht erreichbar. Darauf hin gab es eine Notfallkoordination der L-P-D Ausrichter. Als Antwort auf die Krise entstand diese neue Webseite: https://l-p-d.org

Die „Presse“mitteilung des neuen „Administrator“ hier für Euch :

Warum L-P-D.org?

Nachdem sich die Organisation des LPD immer schleppender über Monate hinzog, und sich vermehrt Fragen über die Zukunft des Linux-Presentation-Day aufhäuften, entschloss sich eine kleine Gruppe auf der LPD-DE Mailingliste zu einem Neustart des LPD. Einfach um weitere Absprünge von (potentiellen) Veranstaltern und Mitstreitern zu verhindern.

Ziel ist dabei die LPD-Organisation auf eine breitere Basis zu stellen um in Zukunft ausfallsicherer zu sein und einfach ORGA-Leute auswechseln zu können. Auch die bisherige Webseite war in der Vergangenheit öfter Thema zu nie umgesetzten Verbesserungsvorschlägen und ist – in die Jahre gekommen – auch recht unübersichtlich.

Diese Webseite soll als zentrales Rückrad für den LPD und die LPD-Orga agieren und möglichst alle relevanten Verwaltungsdaten (soweit DSGVO-Konform) vorhalten um schnell an eine andere Administration übergeben zu können.

Wie sich das weiter entwickelt, wird uns die Zukunft zeigen… — Administrator 2018-11-07 15:41

 

Und trotzdem ist morgen Linux-Presentation-Day in Braunschweig !

Die Welt dreht sich also doch weiter \o/

Hier nochmal unsere Eckdaten vom L-P-D in Braunschweig:

Am 10.11.2018 von 13:00 bis 18 Uhr im Nachbarschaftszentrum „Haus der Talente“ Elbestraße 45, Braunschweig-Weststadt.

Für Nahrung und Getränke ist gesorgt, Leute und Themen gibt es zu hauf und Linux im Überfluß 😀