Wie kann ich eine Verbindung zu einer IPv6-Adresse auf Android?

Auf Android, ich bin mit HttpClient Verbindung zu einer web-Adresse wie folgt:

String url = "http://[fe80::1cef:49e7:2661:ffda]:7001/a.MOV";
HttpParams httpParameters = new BasicHttpParams();
HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet httpGet = new HttpGet(url);
HttpResponse response = client.execute(httpGet);

Funktioniert der code einwandfrei bei der Eingabe eines standard-URL, oder eine mit einer v4-IP-Adresse. Allerdings, wenn ich eine v6-Adresse, die Letzte Zeile des obigen code wird nicht mit einem java.net.SocketException: Invalid argument geworfen.

Veranschaulichen, während die folgende Adresse ein:

http://192.168.1.2:7001/a.MOV

funktioniert ohne ein problem, dieses:

http://[fe80::1cef:49e7:2661:ffda]:7001/ein.MOV

nicht.

Sicher sein, versuchte ich auch mit den neueren HttpURLConnection, um die Verbindung herzustellen, und es führt immer noch in die gleiche exception geworfen.

Ich bin derzeit die Durchführung meiner Prüfung auf einem Google TV-Gerät mit der Android-version 3.2.

So ist es etwas, was ich falsch mache? Und wenn nicht, gibt es eine Möglichkeit, dies zu umgehen, scheinbare Einschränkung von Android?

Bei der Verwendung von link-lokalen Adressen (beginnend mit fe..:), dann müssen Sie die link, den Sie verwenden möchten. So könnte es so etwas wie http://[fe80::1cef:49e7:2661:ffda%eth0]:7001/a.MOV. Besser ist die Verwendung von globalen Adressen oder ULA-Adressen, wenn möglich.

InformationsquelleAutor yydl | 2013-11-25

Schreibe einen Kommentar