Hola a todos de nuevo!!
Luego de un tiempo de avanzar en el programa de ciberControl que realizo con RMI, me surgió el siguiente problema, al correr mi servidor en la maquina designada para ello, y correr un cliente desde un laptop, me he encontrado con el problema de que hace todas las funciones, pero al tratar de desconectar el cliente del servidor, este no lo encuentra, he especificado los puertos de la siguiente manera...
Para el servidor el código es este:
Código Java:
Ver original @Override
System.
out.
println("DEBUG: Llegó un nuevo cliente: Ip:"+ip
); boolean estado = clientes.add(ip);
CServidor.actualizarClientes(clientes);
CServidor.Pcs(clientes);
return estado;
}
@Override
public boolean desconectarse
(String accion,
String ip
) throws System.
out.
println("DEBUG: Salio el cliente de la Ip:"+ip
); boolean estado =false;
clientes.remove(ip);
CServidor.actualizarClientes(clientes);
CServidor.Pcs(clientes);
CServidor.desconectarCliente(ip);//Aquí desconecto el cliente por medio de la ip....
if(accion.equals("RECONECTAR")) {//Aquí lo conecto de nuevo si es que se desea hacerlo..
System.
out.
println("Funciona"); CServidor.reconectaCliente(ip);
clientes.add(ip);
CServidor.actualizarClientes(clientes);
}
return estado;
}
},puerto); ///El puerto le ingreso el '90'
try {
registry.bind("Servidor", stub);
System.
out.
println("DEBUG: Estoy corriendo en:"+InetAddress.
getLocalHost().
getHostAddress()+":"+this.
puerto); Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
}
}
Este es el código de cliente:
Código Java:
Ver original @Override
boolean estado = false;
// System.out.println("DEBUG: "+accion);
//A partir de aquí son las funciones que ejecuta en la PC cliente
if(accion.equals("BLOQUEAR")) {
CCliente.bloquearPC();
estado = true;
}
if(accion.equals("DESBLOQUEAR")){
CCliente.desbloquearPC();
estado = true;
}
if(accion.equals("APAGAR")){
CCliente.apagarPC();
estado = true;
}
if(accion.equals("REINICIAR")){
CCliente.reiniciarPC();
estado = true;
}
if(accion.equals("CANCELAR")){
CCliente.cancelarPC();
estado = true;
}
return estado;
}
},1090);//Puerto que uso para el cliente
registry.bind(this.ip, stub);
}
La cosa es que si ejecuto
mi servidor, y mi cliente en la misma PC, todo funciona bien, es decir
Bloquea, Desbloquea,Reinicia,Apaga,Cancela y funciona lo de
Desconectar el cliente y
Re-conectar el cliente
Pero si ejecuto el servidor en una PC y el cliente en otra, si me deja Bloquear, Desbloquear,Reiniciar,Apagar etc.. pero al tratar de desconectarse del servidor simplemente no procede...
Investigue que se debe a que debe darse la dirección IP del servidor es decir si es
'192.168.1.25' y su puerto
'90' el cliente debe hacer la petición a esa dirección.
Es por ello que recurro a usted, espero puedan ayudarme ya que he intentado todo lo que se me ha ocurrido pero simplemente no he podido encontrar solución alguna..
Dejo el siguiente código complementario de como Desconecto el cliente..:
Código Java:
Ver original try {
//String ip_me = InetAddress.getLocalHost().getHostAddress();
//Registry registro = LocateRegistry.getRegistry(ip_me, port); Tambien he intentado pasar mi ip local, pero es el mismo resultado no funciona en 2 maquinas solo en un solo
IConexion servidorRemoto = (IConexion) registro.lookup("Servidor");
servidorRemoto.desconectarse(accion,ip_des);
CCliente.actualizarNombrePC("Desconectado");
Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
}
}
Gracias por leerme!!