Hola Androides,
Segundas partes nunca fueron buenas, pero aquí solo hacemos primeras partes. En las soluciones presentadas en la sección de aplicaciones hay presentado un Chat para móbiles Android que utiliza una conexión Wifi establecida. El problema viene cuando intentamos probar esta aplicación con un solo dispositivo. En este caso necesitaremos emuladores que intervengan como dialogantes del chat de pruebas. Cada emulador o dispositivo virtual se encuentra aislado de la computadora mediante un router virtual que se encuentra en una red privada 10.0.2/24 de la máquina virutal. De este modo nuestros emuladores no pueden de forma directa hablarse entre sí. En el caso de nuestro Broadcast Chat en la sección de ejercicios el dispositivo real envía un broadcast (paquete con IP de destino e.g. 192.168.1.255) a nuestra WIFI, para que esta repita a todos los dispositivos. El problema es que nuestro emulador no tiene WIFI y la redirección de puertos está limitada ya que cada emulador debe hablar a un puerto distinto de nuestro Localhost. Como solucionamos esto? Veamos algunas cosas.
- La red del emulador tiene la siguiente arquitectura:
The virtual router for each instance manages the 10.0.2/24 network address space — all addresses managed by the router are in the form of 10.0.2., where is a number. Addresses within this space are pre-allocated by the emulator/router as follows:
Network Address | Description |
---|---|
10.0.2.1 | Router/gateway address |
10.0.2.2 | Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine) |
10.0.2.3 | First DNS server |
10.0.2.4 / 10.0.2.5 / 10.0.2.6 | Optional second, third and fourth DNS server (if any) |
10.0.2.15 | The emulated device's own network/ethernet interface |
127.0.0.1 | The emulated device's own loopback interface |
- JAVA nos da las máximas fácilidades para crear un servidor escuchando en un solo puerto a varios clientes(Emuladores) con Sockets conectados a nuestra máquina de desarrollo (10.0.2.2)
La solución es un servidor que emulará la función que hace nuestra WIFI cuando hacemos un BroadCast. Les presento a Android Emulator Server que se compone de dos ficheros: Main.Java y ServerService.Java. Recordad que este Servidor debe correr en vuestra máquina de desarrollo como aplicación JAVA y no como Android Application. Bora entao: