Fonctionnement de 2 clients dans une architecture RMI

Fonctionnement de 2 clients dans une architecture RMI - Java - Programmation

Marsh Posté le 08-04-2006 à 16:38:53    

Bonjour
 
Lorsqu'on veut faire fonctionner 2 clients  dans une architecture avec RMI:
 doit-on créer 2 classes clients?
 est-ce que les 2 clients se connecte à la même instance d'interface ?
   ex:        CountRmi cr = (CountRmi) java.rmi.Naming.lookup("rmi://localhost/CountRmi1" );
                CountRmi cr2 = (CountRmi) java.rmi.Naming.lookup("rmi://localhost/CountRmi1" );
 
               avec CountRmi comme interface


Message édité par marc90 le 08-04-2006 à 17:03:00
Reply

Marsh Posté le 08-04-2006 à 16:38:53   

Reply

Marsh Posté le 10-04-2006 à 04:51:27    

Salut,
 
Pas forcément, tu peux spécifier dans le message à quel client s'adresse le serveur.

Reply

Marsh Posté le 10-04-2006 à 09:58:46    

Auriez vous un exemple avec une classe serveur, une classe client, une interface, une classe implémentation de l'interface avec fonctionnement simultané de 2 clients?

Reply

Marsh Posté le 10-04-2006 à 16:24:13    

:sarcastic:  Tu veux pas une pipe aussi ?
 

Code :
  1. public interface MessageInterface
  2. {
  3.     public String receive() throws RemoteException;
  4.     public int getDestNumber();
  5. }


Code :
  1. public class Message implements MessageInterface
  2. {
  3.     private String text;
  4.     private int destNumber;
  5.     public Message(String text, int destNumber) throws RemoteException
  6.     {
  7.         this.text = text;
  8.         this.destNumber = destNumber;
  9.     }
  10.     public String receive() throws RemoteException
  11.     {
  12.         return text;
  13.     }
  14.      
  15.     public int getDestNumber()
  16.     {
  17.         return destNumber;
  18.     }
  19. }


Code :
  1. public class Client
  2. {
  3.     public Client(int clientNumber) throws Exception
  4.     {
  5.         MessageInterface message = (MessageInterface) Naming.lookup("localhost/MessagePort" );
  6.        
  7.         if(message.getDestNumber() == clientNumber)
  8.             System.out.println(message.receive());
  9.     }
  10.     public static void main(String[] args)
  11.     {
  12.         try
  13.         {
  14.              new Client(Integer.parseInt(args[0]));
  15.         }
  16.         catch(Exception e)
  17.         {
  18.           System.out.println ("Le client veut pas : " + e);
  19.         }
  20.     }
  21. }


Ca m'étonnerait pas que ça compile pas, mais c'est un début.
Faut chercher par toi même un peu aussi des fois quand même (ou montrer le code que t'as déjà écrit).


Message édité par rnoizet le 10-04-2006 à 16:29:19
Reply

Marsh Posté le 10-04-2006 à 18:34:59    

Merci c'est interessant, par contre il manque une classe serveur.

Reply

Marsh Posté le 10-04-2006 à 19:34:10    

Oui.
Ecris la.

Reply

Marsh Posté le 11-04-2006 à 09:20:12    

Et fais une recherche google aussi car on trouve beaucoup d'exemples simples concernant le RMI sur le net...

Reply

Marsh Posté le 11-04-2006 à 09:23:48    

En fait j'en ai trouver mais il ne mettait pas en evidence le fonctionnement de 2 clients

Reply

Marsh Posté le 11-04-2006 à 09:25:33    

Et bien quand tu sais le faire pour un, tu sais pour deux...

Reply

Marsh Posté le 11-04-2006 à 10:11:34    

En fait le client ne fonctionnait pas beaucoup il envoyait juste un entier au serveur et s'arettait, du coup pour en faire fonctionner 2 en même temps, pas terrible.
 
Sinon je voulais une confirmation: pour faire communiquer un client et un serveur il faut bien passer par la classe implementant l'interface, avec une variable dans cette classe, une méthode permettant d'affecter une valeur à cette variable et une autre methode permettant de récuperer la valeur de cette variable.

Reply

Marsh Posté le 11-04-2006 à 10:11:34   

Reply

Marsh Posté le 11-04-2006 à 10:18:09    

Le client travaille sur un objet distant qui implémente une interface que tu as écris.Cette interface étend elle-même l'interface Remote (je ne suis plus sûr du nom). Cette interface définiera les méthodes qui seront accessibles à distance.

Reply

Marsh Posté le 11-04-2006 à 10:27:59    

Par exemple dans l'interface feuilleCahier
 
On a les methodes
 
public void ecrireCahier(String motEcrit)
public String lireCahier()
 
 
 
 
Et dans la classe de l'implementation de l'interface
 
public class feuilleCahierImpl{
 
private String motCahier;
 
public feuilleCahierImpl(){}
 
public void ecrireCahier(String motEcrit){
 motCahier = motEcrit;
}
 
public String lireCahier(){
 return motCahier;
}


Message édité par marc90 le 11-04-2006 à 10:29:49
Reply

Marsh Posté le 11-04-2006 à 10:47:26    

Nan c'est pas bon, je vois pas les héritages et les implémentations...
http://perso.wanadoo.fr/jm.doudoux [...] hap024.htm

Reply

Marsh Posté le 11-04-2006 à 11:50:40    

Non mais j'ai juste fait un exemple sans le client et le serveur.
 

Reply

Marsh Posté le 11-04-2006 à 12:04:11    

De toute maniére je vais te laisser car tu n'as pas l'air de chercher beaucoup de ton côté... Pourtant c'est la meilleure façon d'apprendre... :o


Message édité par brasseld le 11-04-2006 à 12:04:44
Reply

Marsh Posté le 11-04-2006 à 13:15:04    

Si puisque hier j'ai reussi a ecrire sur le client et c est le serveur qui affiche ce que j a ecrit. Mais en faisant de la même facon que dans l exemple que j ai montré. La seule chose que je voulais savoir est si c'était la bonne solution

Reply

Marsh Posté le 13-04-2006 à 14:29:42    

Maintenant mon problème est de rendre accessible une interface graphique à chaque client. doit-on créer l'interface au niveau de chaque client ou la créer au niveau du serveur et la rendre accessible aux clients?

Reply

Marsh Posté le 13-04-2006 à 14:30:16    

L'interface graphique est une JFrame.

Reply

Marsh Posté le 14-04-2006 à 08:22:47    

Tu t'attaques à un peu plus compliqué tout de suite. Moi j'ai déjà fais des GUI sur le client avec des transferts des informations entre Client et Serveur via RMI. Il me semble avoir utiliser des objets Observer Observable en Remote....
 
ps : édites tes message !!!

Reply

Marsh Posté le 14-04-2006 à 08:38:51    

En fait j'arrives bien à comprendre qu'on puisse récupérer une variable style INT ou STRING au niveau du client, par contre j'ai plus de mal a capter qu'on puisse faire la même chose avec un objet.
 
L'objectif final étant que chaque client est accès à la même interface graphique et une modifiction de celle-ci par un client se voit depuis l'autre client.

Reply

Marsh Posté le 14-04-2006 à 08:42:18    

Donc c'es tce que je dis, il faut que tu utilises des objets RemoteObservable et Observer (facilement trouvable sur le net, mais tu peux les écrire par toi-même, c'est pas bien compliqué). Et lorsque tu souhaites que ta méthode retourne un objet, alors la seule contrainte sur cet objet et qu'il implémente l'interface Serializable.

Reply

Marsh Posté le 14-04-2006 à 11:14:33    

Voilà ce que j'ai trouvé à ce sujet là.
http://www.javafr.com/codes/OBSERV [...] 35703.aspx
 
Quelqu'un aurait-il déjà fait un jeu , style Echec Dame ou Puissance 4 en Client-Serveur utilisant RMI?
 


Message édité par marc90 le 17-04-2006 à 10:23:15
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed