WIFI en Android

bLero

Hola mediavideros,

El caso es que tengo que hacer un juego online para Android en el que intervengan 4 jugadores.

Habia pensado utilizar Bluetooth para el envio de mensajes entre ellos pero la topología de red es 1 servidor - 3 clientes y con Bluetooth no puedo conectar más de 2 dispositivos a la vez.

Se me ocurrio entonces hacer una red Wifi Ad-hoc, pero por lo visto no está disponible en la mayoría de dispositivos. Hay alguna solución para activarlo pero hay que rootear, e instalar un parche, etc.

Me queda entonces la opción de Internet, ya sea a traves de Wifi o 3g.

El problema que tengo es que cuando creo un ServerSocket y lo pongo a escuchar en un puerto, necesito saber en que IP me ha creado el Socket para que los clientes se conecten a el.

Si hago serverSckt.getInetAddress() después de crear el Socket, la ip que me devuelve es 0.0.0.0. (null). Lo que me indica que está escuchando en todas las interfaces de red (3g y WIFI). Pero yo solo quiero que me bindee a una y utilizar esa IP para la conexión de los clientes. En principio la IP del WIFI.

elkaoD

http://www.seguridadmobile.com/bluetooth/especificacion-bluetooth/estandar-bluetooth/index.html#Topologia

http://www.lmgtfy.com/?q=android+get+wifi+ip+address

1 respuesta
bLero

#2

El primer enlace, en teoría el protocolo bluetooth permite hasta 7 dispositivos a la vez, pero en Android no funciona. Ya lo he probado de todas las formas posibles, conexiones RFComm en distintos canales, conectar los dispositivos en estrella, etc. Pero al conectar el tercer teléfono da error.

Lo del segundo enlace ya lo he conseguido, pongo el código por si a alguien le sirve:

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipAddr = String.format("%d.%d.%d.%d", (ip & 0xff),
(ip >> 8 & 0xff), (ip >> 16 & 0xff),(ip >> 24 & 0xff));
1 respuesta
elkaoD

#3

http://www.lmgtfy.com/?q=android+bluetooth+multiple+connections

1 respuesta
bLero

#4

ya visite todos esos links en su día.

Un profesor de la Universidad me comentó que en Android no se podía. Aunque el protocolo en sí lo permita.

1 respuesta
elkaoD

#5 yo la verdad que no lo he probado (bluetooth es como muy del pasado xD), pero si ahí pone que con tener diferente UUID por teléfono se puede no estaría de más probarlo (aunque si dices que ya lo visitaste supongo que ya lo has intentado.)

Supongo que en realidad dependerá más que del SO, del modelo.

Desde luego en http://developer.android.com/guide/topics/wireless/bluetooth.html listan como posibilidad "Manage multiple connections".

Usuarios habituales

  • elkaoD
  • bLero