Red inalámbrica Wi-Fi de Android

Estoy desarrollando una aplicación en Android donde estoy buscando todos los compañeros de la gama y luego me conecto con todos ellos, El dispositivo que inició el descubrimiento se convierte en el propietario del grupo y todos los demás se convierten en cliente, he hecho todo lo que la conexión Pero ahora quiero que el propietario del grupo para enviar el mensaje a todos los compañeros de conexión, ¿Cómo lograr esto y también por favor dime cuál es la metodología en la comunicación peer-to-peer, p2p en Android también utilizar IP para enviar y recibir ¿datos?

Gracias Recuerdos Talib.

Wi-Fi Direct / P2P puede considerarse Wi-Fi normal, pero donde el propietario del grupo (GO) actúa como un punto de acceso de software (servidor dhcp, aprovisionamiento, etc.). Así que para responder a su última pregunta, sí Wi-Fi Direct también utiliza IP para enviar y recibir datos.

¿Quieres enviar datos a todos los miembros del grupo? Hay dos soluciones para esto:

  1. Transmita el mensaje una vez usando multicast.
  2. Envíe el mensaje a cada cliente individual del grupo.

El método más eficiente sería la solución 1, para difundir los datos mediante la multidifusión, ya que sólo tendría que enviar los datos una vez. Desafortunadamente, el soporte de multidifusión Wi-Fi está muy fragmentado en Android, ya que muchos dispositivos parecen bloquear el tráfico no unicast. Consulte este artículo para obtener más información en profundidad si desea ir por esta ruta.

La solución 2 es el mejor método si desea garantizar el soporte en todos los dispositivos y transmitir sólo una pequeña cantidad de datos. El GO necesita las direcciones IP de los clientes del grupo, pero debido a la forma en que Wi-Fi Direct está implementado en Android, sólo el GO IP es conocido por todos los dispositivos. Una solución es dejar que los clientes se conecten a un socket en el GO, para obtener su dirección IP:

Codigo del cliente

private static final int SERVER_PORT = 1030; ... // on group join: wifiP2pManager.requestConnectionInfo(channel, new ConnectionInfoListener() { @Override public void onConnectionInfoAvailable(WifiP2pInfo p2pInfo) { if (!p2pInfo.isGroupOwner) { // Joined group as client - connect to GO Socket socket = new Socket(); socket.connect(new InetSocketAddress(p2pInfo.groupOwnerAddress, SERVER_PORT)); } } }); 

Código del propietario del grupo:

 private static final int SERVER_PORT = 1030; private ArrayList<InetAddress> clients = new ArrayList<InetAddress>(); public void startServer() { clients.clear(); ServerSocket serverSocket = new ServerSocket(SERVER_PORT); // Collect client ip's while(true) { Socket clientSocket = serverSocket.accept(); clients.add(clientSocket.getInetAddress()); clientSocket.close(); } } 

Ahora todo lo que necesita hacer es iniciar un serversocket en cada cliente, y hacer que iterate a través de la lista de clientes creando una conexión de socket a cada uno y enviando el mensaje que desea transmitir.

  • ¿Podemos conectarnos al iPhone desde un dispositivo Android aunque no esté en la misma red?
  • Desconectar de un grupo directo wifi
  • Android Wifip2p: ¿Por qué la información de grupo es nula después de conectarse con el propietario del grupo
  • Cómo alcanzar la exhibición del wifi después de conectar por el wifi directo
  • Wi-Fi Directo y "normal" Wi-Fi - ¿Diferentes MAC?
  • Cómo detener el descubrimiento de pares en WifiDirect Android
  • ¿Puedo conectar Windows PC a un teléfono Android con WiFi Direct
  • Android WifiP2p - Se notifica cuando un dispositivo descubierto no está disponible
  • Wi-fi P2P. Informar a todos los compañeros disponibles de algún evento
  • Conecta el iPhone a Android Wifi Direct soft AP
  • ¿Cómo obtengo un descubrimiento de servicio Wi-Fi punto a punto para trabajar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.