IPv4 umrechen

WhiteRabbit

Grünschnabel
Hallo,
ich suche eine Möglichkeit auf einfachem Weg eine IPv4 Adresse in IPv6 umzurechnen und umgekehrt (IPv6 natürlich nur zurückrechnen wenn sie aus einer IPv4 entstanden ist). Ich habe gesehen, dass es eine Klasse gibt die einen dabei helfen soll, nur finde ich da nicht wirklich die Lösung die ich brauche. Ich hatte den Ansatz die IPv4 zu splitten dann in Hex umzurechnen und dann in IPv6 zumappen. Aber leider mit eher mäßigem Erfolg.

Könnte mir jemand von euch vielleicht einen kleinen Lösungsansatz erstellen? Oder kennt jemand nen Link zu einem Opensource Projekt das sowas kann? Habe bei Google nach längerer Suche nichts gefunden.

Danke im Vorraus
MFG Rabbit
 
Hallo,
ich habe jetzt mit Hilfe eines Freundes folgenden Code geschrieben.
Code:
package tmp.net;

import java.net.Inet6Address;
import java.net.InetAddress;
import java.util.Arrays;

public class IPv6_Test {

	public static void main(String[] args) throws Exception {
		InetAddress IPv4 = InetAddress.getByName("192.168.41.192");
		System.out.println("IP in v4: [" + IPv4.getHostAddress() + "] " + IPv4.getClass().getName());

		InetAddress IPv6 = InetAddress.getByName("::" + IPv4.getHostAddress());
		System.out.println("IP in v6: [" + IPv6.getHostAddress() + "] " + IPv6.getClass().getName());

		Inet6Address ipv6 = (Inet6Address) IPv6;
		System.out.println("IP in v6: [" + ipv6.getHostAddress() + "] ist IPv4 "
				+ (ipv6.isIPv4CompatibleAddress() ? "kompatibel" : "inkompatibel"));

		byte[] addressIPv6 = ipv6.getAddress();
		System.out.println("IPv6 in bytes: " + Arrays.toString(addressIPv6));

		byte[] addressIPv4 = Arrays.copyOfRange(addressIPv6, 12, 16);
		System.out.println("IPv4 in bytes: " + Arrays.toString(addressIPv4));

		InetAddress _myIPv4 = InetAddress.getByAddress(addressIPv4);
		System.out.println("IP in v4 again: [" + _myIPv4.getHostAddress() + "] ");
	}
}
Nun will(muss) ich ihn noch in die dafür vorgesehenen Methoden verteilen. Aber irgendwie bin ich zu blöd dafür.

So sieht das aus wo ich das reinstecken will

Code:
public class IPUtil {

	public enum IP_FORMAT {
		IPv4, IPv6
	}

	public static Inet6Address convertToIPv6(Inet4Address inet4Address) {
		
		return null;
	}

	/**
	 * @return IPv6 als String
	 * @throws Exception 
	 */
	public static String convertToIPv6(String ipv4str) throws Exception   {
		
		return null;
	}

	public static IP_FORMAT whichFormatIsIt(String ipAddress) {

		return IP_FORMAT.IPv4;
	}

}
Könnte mir jemand dabei helfen? eventuell mal eine (im besten Fall alle ) so verpacken dass das funktionieren würde? Das ist übrigens ne Utility Klasse.

Danke im Vorraus
und LG Rabbit
 
Zuletzt bearbeitet:
Zurück