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 boolean estado = clientes.add(ip); CServidor.actualizarClientes(clientes); CServidor.Pcs(clientes); return estado; } @Override 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.. 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
public void desconectar(String accion,String ip_des, int port) throws RemoteException, NotBoundException{ 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!!