Necesito enviar un DatagramPacket a Android desde java. Las dos IPs se conocen y se ven, de hecho alguna vez he conseguido enviar el mensaje adaptando éste codigo:
Servidor JAVA
Código:
Cliente ANDROIDString messageStr="Hello Android!"; int server_port = 12345; DatagramSocket s = new DatagramSocket(); InetAddress local = InetAddress.getByName("192.168.1.xxx"); int msg_length=messageStr.length(); byte[] message = messageStr.getBytes(); DatagramPacket p = new DatagramPacket(message, msg_length,local,server_port); s.send(p);
Código:
El problema que se me presenta es el siguiente. Mientras recibo el mensaje (que no tiene por qué ser instantáneamente) el método receive() bloquea el hilo principal de la ejecución. Esto no puede ser, mientras se recibe el mensaje la aplicacion debe seguir trabajando, es decir, necesito que el metodo receive se haga en segundo plano.String text; int server_port = 12345; byte[] message = new byte[1500]; DatagramPacket p = new DatagramPacket(message, message.length); DatagramSocket s = new DatagramSocket(server_port); s.receive(p); text = new String(message, 0, p.getLength()); Log.d("Udp tutorial","message:" + text); s.close();
He probado con AsyncTask, con Service, con IntentService, con Threads y NADA. estoy desesperado. Espero vuestras respuestas y perdón por el sermón. Un saludo y gracias de antemano.