2012-05-12 13 views
11

Estoy desarrollando una aplicación de Android y necesito usar IPv6 para conectarme a un servidor.Android e IPv6 en Java

IPv6 está habilitado en el teléfono y puedo ver mi dirección IPv6 local con ip addr. También puedo ping6 con éxito mi teléfono desde la PC y viceversa.

Pero cuando trato de obtener direcciones locales en Android a través del comando Java NetworkInterface.getNetworkInterfaces() Solo obtengo direcciones IPv4.

También me tryed para abrir un socket de cliente pero la línea Socket s = new Socket(MYSERVERIPV6ADDRESS, PORT); siempre tiros java.net.SocketException: Invalid argument. Estoy seguro de que la dirección es correcta porque he intentado con el mismo código en mi computadora y funciona perfectamente.

Parece que IPv6 es compatible con el sistema operativo pero no con la máquina virtual Java. ¿Hay alguna manera de resolver este problema?

+0

Actualización: Usando 'Socket s = new Socket (MYSERVERIPV6ADDRESS +"/64% eth0 ", PORT);' throws 'java.net.SocketException: excepción de host desconocido'. – Andrea

Respuesta

2

Utilice este método estático en Inet6Address para obtener un objeto Inet6Address para su dirección,

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

a continuación, utilizar el siguiente constructor toma llegar un socket,

Socket (InetAddress dstAddress, int dstPort).

1

La compatibilidad del IP6 es la elección del proveedor para incluir, a mi entender, el soporte está ahí.

Supongo que está probando su aplicación en emulador. Observando cómo funciona la red de Android, http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking Está detrás de un enrutador IPv4 direccionado 10.0.2.1. Por lo tanto, no puede abrir un socket utilizando IPv6. Todo depende si existe una ruta de todos los enrutadores que son compatibles con IPv6 desde su teléfono a su destino.

+0

No, estoy probando en un Galaxy SII. IPv6 es compatible con el teléfono porque puedo 'ping6' con éxito el teléfono desde la PC y viceversa. – Andrea

Cuestiones relacionadas