2012-05-12 16 views
11

Ich entwickle eine Android-Anwendung und ich muss IPv6 verwenden, um eine Verbindung zu einem Server herzustellen.Android und IPv6 in Java

IPv6 ist auf dem Telefon aktiviert und ich kann meine lokale IPv6-Adresse mit ip addr sehen. Ich kann auch erfolgreich ping6 mein Handy vom PC und umgekehrt.

Aber ich versuche, lokale Adressen auf Android durch den Java-Befehl NetworkInterface.getNetworkInterfaces() zu bekommen Ich bekomme nur IPv4-Adressen.

Ich habe versucht auch eine Client-Socket zu öffnen, aber die Linie Socket s = new Socket(MYSERVERIPV6ADDRESS, PORT); immer java.net.SocketException: Invalid argument wirft. Ich bin sicher, dass die Adresse korrekt ist, weil ich mit dem gleichen Code auf meinem Computer versucht habe und perfekt funktioniert.

Es scheint, dass IPv6 vom Betriebssystem, aber nicht von der Java Virtual Machine unterstützt wird. Gibt es eine Möglichkeit, dieses Problem zu lösen?

+0

Update: Mit 'Socket s = neuer Socket (MYSERVERIPV6ADDRESS +"/64% eth0 ", PORT);' throws 'java.net.SocketException: Unknown host exception'. – Andrea

Antwort

2

Mit dieser statischen Methode in Inet6Address ein Inet6Address Objekt für Ihre Adresse zu bekommen,

Inet6Address getByAddress (String-Host, byte [] addr, int scope_id)

dann verwenden, wird die folgende Fassung Konstruktor zu erhalten ein Socket,

Socket (InetAddress dstAddress, int dstPort).

1

IP6-Unterstützung ist die Wahl des Anbieters zu umfassen, nach meinem Verständnis, Unterstützung ist da.

Ich gehe davon aus, dass Sie Ihre App im Emulator testen. Sehen Sie, wie Android Netzwerk funktioniert, http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking Es ist hinter einem IPv4-Router adressiert 10.0.2.1. Daher können Sie einen Socket nicht mit IPv6 öffnen. Es hängt alles davon ab, ob ein Pfad von allen Routern existiert, die von Ihrem Telefon zu Ihrem Ziel IPv6-kompatibel sind.

+0

Nein, ich teste gerade ein Galaxy SII. IPv6 wird vom Telefon unterstützt, da ich das Telefon vom PC aus erfolgreich pingen kann und umgekehrt. – Andrea