Problema con MulticastSocket en Java-Android
Estoy empezando a codificar con MulticastSocket, tratando de hacer una aplicación sencilla con un cliente y un servidor para enviar mensajes.
El código que tengo para el servidor:
- La etiqueta languageLevel de Android .idea / misc.xml sigue cambiando JDKs
- Android obtiene una lista de colores de los recursos
- ¿Cómo crear una alarma cuando se crea un evento de calendario?
- Edificio Gradle tarda una eternidad después de actualizar a Java 8
- ¿Cómo convertir el formato 24 horas en formato 12 h?
import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; import java.net.SocketException; public class Servidor { private static MulticastSocket ms; public static void main(String[] args) throws IOException{ InetAddress sessAddr = InetAddress.getByName("224.2.76.24"); try{ sessAddr = InetAddress.getByName("224.2.76.24"); ms = new MulticastSocket(5500); ms.joinGroup(sessAddr); while (true) { byte[] mensaje = new byte[1024]; mensaje = "aa".getBytes(); DatagramPacket dp = new DatagramPacket(mensaje, mensaje.length,sessAddr,5500); ms.send(dp); } } catch (SocketException se) { System.err.println(se); } ms.leaveGroup(sessAddr); } }
Y esto en el cliente:
package com.example; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; import java.net.UnknownHostException; import android.app.Activity; import android.os.Bundle; import android.widget.EditText; import android.widget.TextView; public class ClienteMultiCast extends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView Mensaje; Mensaje =(TextView)findViewById(R.id.Mensaje); InetAddress ia = null; byte[] buffer = new byte[65535]; MulticastSocket ms = null; int port = 5500; try { ia = InetAddress.getByName("224.2.76.24"); DatagramPacket dp = new DatagramPacket(buffer, buffer.length,ia,port); ms = new MulticastSocket(port); ms.joinGroup(ia); while (true) { ms.receive(dp); String s = new String(dp.getData(),0,dp.getLength()); Mensaje.setText(s); } } catch (UnknownHostException e) {Mensaje.setText(e.getMessage());} catch (IOException e) {Mensaje.setText(e.getMessage()); } try { ms.leaveGroup(ia); } catch (IOException e) { Mensaje.setText(e.getMessage()); } } }
El problema es que cuando empiezo ambos, no pasa nada. El cliente no recibe ningún mensaje.
Alguna idea de lo que está mal?
- "El método setListAdapter (ArrayAdapter) no está definido para el tipo create"
- Convertir objeto nulo en String
- Android 4.3 jelly Bean Time formato cuestión
- Java equivalente de .NET RSACryptoServiceProvider con SHA-1
- Recursos de Android: ¿Cómo se cargan los mapas de bits de los recursos manejados en cuanto a memoria?
- Android no es compatible con Java v7 +, así que ¿debo usar múltiples capturas o una captura con cheques de instanceof?
- Java.lang.ClassNotFoundException en loader dalvik.system.PathClassLoader en el lanzamiento de la aplicación
- Finalize () agotado el tiempo de espera después de 30 segundos
Diego,
De forma predeterminada, la pila de WiFi de Android filtra los paquetes de multidifusión. Echa un vistazo a http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html .
Usted necesita algo en la línea de:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* Turn off multicast filter */ MulticastLock mcastLock = new MulticastLock(); mcastLock.acquire(); /* Process Multicast Packets */ }
Parece que el soporte de multidifusión en Android no es tan sólido como algunos de uso podría esperar. Ver http://codeisland.org/2012/udp-multicast-on-android/
Es decir, si realmente funciona o puede depender del dispositivo. No está funcionando en mi Nexus5.
- Eclipse: no se puede completar la instalación porque no se pudo encontrar uno o más elementos necesarios (org.apache.httpcomponents.httpclient)
- Alinear botones de radio dentro del grupo de radio