messenger en java
Publicado por beki (1 intervención) el 09/01/2008 13:51:19
Hola muy wenas, soy más o menos nueva en java y estoy intentando programar una especie de messenger, mi programa tiene varias clases, Contacto, que almacena la información de cada contacto (Nombre, alias,...), NuevoContacto que hereda de Contacto y añade a la información de cada contacto el estado en el que se encuentra(CONECTADO, DESCONECTADO), AlmacenContactos, que contiene un array con la lista de contactos de cada usuario, Recepcion, que implementa una interfaz dada para mandar un mensaje cada vez que un usuario de la lista cambie de estado y cambia el estado de ese contacto en cuestion y el Programa Principal. Weno, pues no me da errores, pero no me cambia el estado de los contactos cuando pasan a conectados o a desconectados, lo que tengo es algo así:
public void messageReceived(String usuario, int status){
if(status==messenger.CONECTADO){ //Se pasa a estado CONECTADO
for(i=0;i<ocupado; i++){
alias=((NuevoContacto)Almacen.TablaContactos[i]).getAlias();//Comprobamos cual es el contacto para el que hay que cambiar el estado.
if(alias.equals(usuario)){
((NuevoContacto)Almacen.TablaContactos[i]).estado=messenger.CONECTADO; //Cambiamos el estado del contacto a CONECTADO.
System.out.println("#Cambio de estado de " + usuario + " a CONECTADO.");
}
}
}
//Hacemos lo mismo, pero para cuando el estado pasa a DESCONECTADO.
if(status==messenger.DESCONECTADO){
for(i=0;i<ocupado;i++){
alias=((NuevoContacto)Almacen.TablaContactos[i]).getAlias();
if(alias.equals(usuario)){
((NuevoContacto)Almacen.TablaContactos[i]).estado=messenger.DESCONECTADO;
System.out.println("#Cambio de estado de " + usuario + " a DESCONECTADO.");
}
}
}
}
Parece ser que el mensaje si lo pongo fuera de los if y tal, si lo envía al usuario correcto, ya que yo tiro primero un servidor(Ya codificado) y luego dos ventanas de msdos, como si fuera dos usuarios distintos, pero no cambia el estado del contacto en cuestión, creo que puede ser porque mira en el almacen de contactos del usuario y no del "receptor" y claro ahí nunca va a encontrar al que cambia de estado porque es el mismo y no se tiene en su lista de contactos a el mismo, pero no se como hacer que miere el la lista del "receptor".
Buenos, os agradecería mucho queme ayudarais.
Saludos.
public void messageReceived(String usuario, int status){
if(status==messenger.CONECTADO){ //Se pasa a estado CONECTADO
for(i=0;i<ocupado; i++){
alias=((NuevoContacto)Almacen.TablaContactos[i]).getAlias();//Comprobamos cual es el contacto para el que hay que cambiar el estado.
if(alias.equals(usuario)){
((NuevoContacto)Almacen.TablaContactos[i]).estado=messenger.CONECTADO; //Cambiamos el estado del contacto a CONECTADO.
System.out.println("#Cambio de estado de " + usuario + " a CONECTADO.");
}
}
}
//Hacemos lo mismo, pero para cuando el estado pasa a DESCONECTADO.
if(status==messenger.DESCONECTADO){
for(i=0;i<ocupado;i++){
alias=((NuevoContacto)Almacen.TablaContactos[i]).getAlias();
if(alias.equals(usuario)){
((NuevoContacto)Almacen.TablaContactos[i]).estado=messenger.DESCONECTADO;
System.out.println("#Cambio de estado de " + usuario + " a DESCONECTADO.");
}
}
}
}
Parece ser que el mensaje si lo pongo fuera de los if y tal, si lo envía al usuario correcto, ya que yo tiro primero un servidor(Ya codificado) y luego dos ventanas de msdos, como si fuera dos usuarios distintos, pero no cambia el estado del contacto en cuestión, creo que puede ser porque mira en el almacen de contactos del usuario y no del "receptor" y claro ahí nunca va a encontrar al que cambia de estado porque es el mismo y no se tiene en su lista de contactos a el mismo, pero no se como hacer que miere el la lista del "receptor".
Buenos, os agradecería mucho queme ayudarais.
Saludos.
Valora esta pregunta


0