Eventos en recepcion de mensajes en clientes moviles
Buenas.
Tengo un modulo que tiene una conexion socket.
[code]public boolean cmConecta(String s_ip, String s_port) {
serv_ip = s_ip;
serv_port = s_port;
url="socket://"+serv_ip+":"+serv_port;
try {
socket = (StreamConnection)Connector.open(url,Connector.READ_WRITE);
os = socket.openOutputStream(); // SALIDA
is = socket.openInputStream(); // INGRESO
flag_conn = true;
} catch(Exception e) {
// ups. no aperture conexion.
flag_conn = false;
System.out.println("PUCHA 1. NO CONECTE");
}
return flag_conn;
}[/code]
Ahora,, cuento con un par de hilos, encargados cada uno de enviar y recibir paquetes o trama por el Socket.
[code]public boolean sendUbkMessage(UbkMessage msg) {
UbkMessage mmsg = msg;
// llamo a toTrama
String trama = mmsg.toTrama();
thread_send = new tSend(trama);
thread_send.start();
// Mientras tanto, estamos asegurando que se envio el mensaje correctamente.
return true;
}
class tSend extends Thread {
private String trama;
// Cosntructor.
public tSend(String trama) {
this.trama = trama;
}
// Aqui va el hilo.
public void run() {
// Ahora enviamos la cadena.
try {
int i;
byte[] datos = trama.getBytes();
if (os != null) {
os.write(datos); os.flush(); // suelta todo rapido!.
}
} catch (Exception e) {
System.out.println("PUCHA 2. NO ENVIE.");
}
}
}[/code]
Mi problema esta en la recepcion de trama por socket. Debido a que esta en un hilo aparte, el bucle de recepcion recoje la informacion por el socket, pero no encuentro la forma de que el hilo de la clase de comunicaciones informe al hilo principal del sistema de que hay un paquete pendiente a ser procesado. Es decir, necesito una especie de Evento que me notifique la llegada de un paquete del servidor a mi telefono para procesarlo correctamente.
Tengo un modulo que tiene una conexion socket.
[code]public boolean cmConecta(String s_ip, String s_port) {
serv_ip = s_ip;
serv_port = s_port;
url="socket://"+serv_ip+":"+serv_port;
try {
socket = (StreamConnection)Connector.open(url,Connector.READ_WRITE);
os = socket.openOutputStream(); // SALIDA
is = socket.openInputStream(); // INGRESO
flag_conn = true;
} catch(Exception e) {
// ups. no aperture conexion.
flag_conn = false;
System.out.println("PUCHA 1. NO CONECTE");
}
return flag_conn;
}[/code]
Ahora,, cuento con un par de hilos, encargados cada uno de enviar y recibir paquetes o trama por el Socket.
[code]public boolean sendUbkMessage(UbkMessage msg) {
UbkMessage mmsg = msg;
// llamo a toTrama
String trama = mmsg.toTrama();
thread_send = new tSend(trama);
thread_send.start();
// Mientras tanto, estamos asegurando que se envio el mensaje correctamente.
return true;
}
class tSend extends Thread {
private String trama;
// Cosntructor.
public tSend(String trama) {
this.trama = trama;
}
// Aqui va el hilo.
public void run() {
// Ahora enviamos la cadena.
try {
int i;
byte[] datos = trama.getBytes();
if (os != null) {
os.write(datos); os.flush(); // suelta todo rapido!.
}
} catch (Exception e) {
System.out.println("PUCHA 2. NO ENVIE.");
}
}
}[/code]
Mi problema esta en la recepcion de trama por socket. Debido a que esta en un hilo aparte, el bucle de recepcion recoje la informacion por el socket, pero no encuentro la forma de que el hilo de la clase de comunicaciones informe al hilo principal del sistema de que hay un paquete pendiente a ser procesado. Es decir, necesito una especie de Evento que me notifique la llegada de un paquete del servidor a mi telefono para procesarlo correctamente.
