[Java] IP-Adresse bekommen fehler

01/09/2015 20:03 XxharCs#1
Hey,
ich habe ein Problem in Java und zwar, wenn ich versuche die IP des Hosts zu bekommen, bekomme ich die IPv6 Addresse statt der IPv4 Addresse. :confused:

Bin ratlos, gegoogelt habe ich, und nichts gefunden(villt bin ich auch einfach drüber geflogen und es nicht gemerkt :P :D)

Naja hier der Code:
Code:
...
private String ip;

protected void getIP() throws SocketException {

	Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();

	while (interfaces.hasMoreElements()) {

		NetworkInterface iface = interfaces.nextElement();
		if (iface.isLoopback() || !iface.isUp())
			continue;

		Enumeration<InetAddress> addresses = iface.getInetAddresses();

		while(addresses.hasMoreElements()) {

			InetAddress addr = addresses.nextElement();
			this.ip = addr.getHostAddress();
		}
	}
}
...
Edit: Wenn ich es auf einem Linux System teste, bekomme ich dann normal die IPv4 Addresse, bei Windows wie gesagt IPv6; hmm
01/09/2015 20:38 qqdev#2
Versuch mal das:

Code:
System.setProperty("java.net.preferIPv4Stack" , "true");
01/09/2015 20:50 XxharCs#3
Quote:
Originally Posted by qqdev View Post
Versuch mal das:

Code:
System.setProperty("java.net.preferIPv4Stack" , "true");
Das erfüllt seinen Zweck! :)

Kann ich die IPv4 auch so bevorzugen, ohne System.setProperty() zu verwenden?

Edit: Habs gelöst, ich habe anscheinend die Inet4Address Klasse in der API übersehen :facepalm:
Ich überprüfe dann normal:
Code:
protected void getIP() throws SocketException {

	Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();

	while (interfaces.hasMoreElements()) {

		NetworkInterface iface = interfaces.nextElement();
		if (iface.isLoopback() || !iface.isUp())
			continue;

		Enumeration<InetAddress> addresses = iface.getInetAddresses();

		while(addresses.hasMoreElements()) {

			InetAddress addr = addresses.nextElement();
			if(!addr.isLoopbackAddress() && addr instanceof Inet4Address) // ich ueberpruefe hier ob es eine IPv4 Addresse ist
				this.ip = addr.getHostAddress();
		}
	}
}