Zurück IPv6 in Java
Gibt es eine Möglichkeit in Java zu erzählen, bis Sie wieder nur IPv6? Ich habe alles versucht und kann es nicht zu funktionieren.
try
{
InetAddress inet = InetAddress.getByName(hostName);
boolean status = inet.isReachable(5000);
if (status)
{
System.out.println(inet.getCanonicalHostName() + " Host Reached\t" + java.net.Inet6Address.getByName(hostName).getHostAddress());
}
else
{
System.out.println(inet.getCanonicalHostName() + " Host Unreachable");
}
}
catch (UnknownHostException e)
{
System.err.println("Host does not exists");
}
catch (IOException e)
{
System.err.println("Error in reaching the Host");
}
Die Linie, die ich verwenden, um zu versuchen, um return IPv6 nur:
System.out.println(inet.getCanonicalHostName() + " Host Reached\t" + java.net.Inet6Address.getByName(hostName).getHostAddress());
Dieser hält die Rückkehr IPv4. Jemand eine Idee warum die das machen?
Das ist, was ich verwende.
haben Sie ipv6 auf Ihrem Computer aktiviert ?
Ja. Ich habe geschrieben, dieses Programm in C# und es funktioniert, nur es kann nicht herausfinden in java.
haben Sie ipv6 auf Ihrem Computer aktiviert ?
Ja. Ich habe geschrieben, dieses Programm in C# und es funktioniert, nur es kann nicht herausfinden in java.
InformationsquelleAutor Nick | 2012-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
java.net.Inet6Address
nicht überschreibengetByName()
also es wird ja immer wieder der bestimmte IPv4-Adresse,
es sei denn, Ihre parameter selbst ist in der form eine gültige IPv6-Adresse, in diesem Fall diese Methode zurück Inet6Address-Objekt.
Beispielsweise:
getByName("stackoverflow.com")
--> Inet4AddressgetByName("2001:0db8:85a3:08d3:1319:8a2e:0370:7344")
--> Inet6AddressInetAddress.getByName()-Dokumentation
Also, wenn Sie wollen zu bekommen eine IPv6-Adresse, die Sie brauchen, um zu definieren, innerhalb Ihrer parameter oder konfigurieren Sie einen DNS-Server zurück, die IPv6-Adresse anstelle der IPv4-Adresse.
Andere Methode zum abrufen der IPv6-Adresse ist mit
InetAddress.getAllByName("www.google.at")
gibt alle bekannten IP-Adressen des Hosts.Zum Beispiel können Sie verwenden Sie diese Methode zum filtern der zurückgegebenen Arrays, die das erste IPv6-Adresse oder
null
wenn der host nicht über ein:UPDATE:
Weitere Funktionen, vor allem jene in Bezug auf DNS-Servern, empfehle ich die Verwendung der externen Bibliothek DNSJava, weil die reinen Java-Implementierung von DNS-Unterstützung ist schlecht.
http://www.dnsjava.org/
Aktuelle Code:
Es hängt von der verwendeten DNS-Server und natürlich die Gastgeber zu ... Wenn der host dont aktiviert IPv6 oder der DNS gibt nur die IPv4-Adressen sind Sie kein Glück ... aber man könnte InetAddress.getAllByName("stackoverflow.com") ausprobieren .. die gibt alle bekannten IP-Adressen für diese domain.
Diese sind lokale Rechner, die alle IPv6 aktiviert haben. Ich habe ein Programm, das ich geschrieben habe in C# und gibt die beiden IPv4-und IPv6 als auch volle DNS-Namen, aber ich kann nicht herausfinden, wie man es in Java.
Dann InetAddress.getAllByName("..."); wird den trick tun .. ich habe versucht es in meinem eigenen Netzwerk und es funktionierte dort. Hüten Sie sich vor dieser Methode zurück, sowohl addresstypes.
InetAddress.getByName("ipv6.google.com")
zurückkehren könnenInet6Address
rextester.com/PNY17654 (Beispiel).InformationsquelleAutor Pr0gr4mm3r
Könnte man versuchen zu definieren, JVM_ARGS
-Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true
mit, dass Requisiten es bevorzugen IPv6-Adresse auf
InetAddress#getByName
Mehr info: https://docs.oracle.com/javase/8/docs/technotes/guides/net/ipv6_guide/
InformationsquelleAutor lanwen