Me gustaría saber si es factible el hecho de que haya un cliente rmi (funcionando como servidor) y varios servidores (funcionando como clientes) Y si es así como se podría hacer
Si es factible, no es muy difícil de hacer. Para que un cliente rmi funcione como servidor, ademas de vincular objetos remotos para su uso debe de crear un objeto remoto que permita a los otros "clientes" acceder. En el caso de servidores como clientes es exactamente lo mismo. Si te hace algo más, no dudes en ponerte en contacto conmigo
Te cuento lo que he hecho, no se si me funciona porque no tengo una red donde probarlo: Cliente: Creo una instancia de la interfaz (InterfazRemota ir) y cuando registro el objeto con el lookup (ir=(InterfazRemota)Naming.lookup(dir); Dejo la dirección en "dir" que va tomando el valor de un fichero de texto donde hay direcciones IP (cada una corresponde a cada cliente(con código de servidor) que hay en la red) y Luego querría meterlo en un array tal como: Object[] clientes=t; De tal manera que luego pudiera recorrer ese array para que se pudiera comunicar con los clientes. Bueno, no se si esta solución es muy buena, pero es lo único que se me ha ocurrido. Muchas gracias por todo, ah! Y ya que estoy te querría preguntar como puedo quitar una linea de un archivo de texto, el de las direcciones, si se que linea tengo que quitar, ¿cómo lo puedo hacer? Muchas Gracias de nuevo
Un par de cosas: 1. Para probar un programa rmi no te hace falta tener una red, puedes hacerlo a través del la dirección local: 127.0.0.1, esta dirección se refiere a tu maquina. 2.Lookup se utiliza para obtener la referencia a un objeto remoto. No hace falta que cojas la dirección ip de un fichero, en el paquete net de java vienen funciones que te permite obtener tu ip 3. Ademas de la ip debes dar un nombre al objeto, algo como 127.0.0.1/cliente , similar a las urls convencionales 4. Lo que me comentas de meter las referencias a los objetos remotos en un array es correcta, lo he probado en otras ocasiones y funciona.
1.- Ya se que se puede probar en la maquina, la cosa era probar si me funcionaba con más de un servidor en red. 2.- Lo del fichero es simplemente para controlar todos los servidores de la red y si cambio de red solo tener que modificar el archivo de texto y no el programa. 3- Muchas gracias por todo lo que me vas mandando, eres el único que me ha contestado hasta ahora. 4.- ¿Ya lo he probado todo y funciona solo me queda una pregunta hay alguna manera de eliminar una linea de un archivo de texto? (Es para quitar direcciones) Gracias ;)
Siento la tardanza, estoy algo liado. Inicialmente java no ofrece ninguna función para eliminar lineas de un archivo de texto, lo mejor es que leas el fichero intergramente y lo guardes en memoria. Una vez que esta en memoria realiza sobre esta los cambios necesarios y sobreescribe el contenido del fichero con la version editada de este que tienes en memoria.
Muchas gracias por tu colaboración y explicaciones, esta ultima me ha llegado un poco tarde ya que ya lo había implementado pero la intención es lo que cuenta. Muchas gracias, de nuevo