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:
- Ocultar la interfaz de usuario del sistema en Lollipop
- IntelliJ Idea dando java.lang.OutOfMemoryError: Error de espacio de montón de Java incluso después de aumentar el tamaño de montón
- No se puede reducir el espacio extra en MPAndroidChart RadarChart
- Paso de lista <String> a String ... parámetro
- Alternativas a java en android
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?
- Cosas más extrañas en la resolución de clases de Android
- ¿Existe un límite en el número de líneas de código que puede poner en un doublaje de Eclipse java
- Anidados if / else, switches o algo más eficiente para el combate RPG?
- ¿Cómo leer eficientemente un objeto Bitmap en una matriz de números enteros bidimensionales?
- gcm_defaultSenderId no se puede resolver
- El nombre del paquete de refactorización rompe toda la aplicación
- Cambiar la carpeta de salida para Android R.java en Eclipse cuando se utiliza Maven
- Ahorro de grandes arreglos cortos android
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