Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2006 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Aide pour un chat RMI en Java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour un chat RMI en Java

n°1809090
dtom
Posté le 06-11-2008 à 17:16:40  profilanswer
 

Bonjour,
 
Je suis débutant en programmation java et j'ai pour projet la réalisation d'un chat en utilisant les RMI.
 
Le problème qui se pose c'est que n'arrive pas à envoyer le message aux autres clients connectés.
 
Voici le code source des classes :
 
Côté client :

Code :
  1. import java.rmi.*;
  2. import java.io.*;
  3. public class cltEcho {
  4.     public static void main(String arg[]){
  5.         BufferedReader in=null;
  6.         String msg=null;
  7.         String reponse=null;
  8.         interEcho serveur=null;
  9.        
  10.         try{
  11.             // ouverture du flux clavier
  12.             in=new BufferedReader(new InputStreamReader(System.in));
  13.             // localisation du service
  14.             serveur=(interEcho) Naming.lookup("srvEcho" );
  15.             // boucle de lecture des msg à envoyer au serveur d'écho
  16.             System.out.print("Message : " );
  17.             msg=in.readLine().toLowerCase().trim();
  18.             while(! msg.equals("/quit" )){
  19.                 // envoie du msg au serveur et réception de la réponse
  20.                 reponse=serveur.echo(msg);
  21.                 // suivi
  22.                 System.out.println("Réponse serveur : " +reponse);
  23.                 // msg suivant
  24.                     System.out.println("Message : " );
  25.                 msg=in.readLine().toLowerCase().trim();
  26.             }
  27.             System.exit(0);
  28.         }
  29.         catch (Exception e){
  30.             System.err.println("Erreur : " +e);
  31.             System.exit(2);
  32.         }
  33.     }
  34. }


 
Implémentation :

Code :
  1. import java.rmi.*;
  2. // l'interface distante
  3. public interface interEcho extends Remote{
  4.     public String echo(String msg) throws java.rmi.RemoteException;
  5.     public String broadcast(String msg) throws java.rmi.RemoteException;
  6. }


 
Côté serveur :

Code :
  1. import java.rmi.*;
  2. import java.rmi.server.*;
  3. import java.net.*;
  4. // classe implémentant l'écho distant
  5. public class srvEcho extends UnicastRemoteObject implements interEcho{
  6.     String message=null;
  7.     int version=0;
  8.    
  9.     // constructeur
  10.     public srvEcho() throws RemoteException{
  11.         super();
  12.     }
  13.     //méthode réalisant l'écho
  14.     public String echo(String msg) throws RemoteException{
  15.         version++;
  16.         message=msg;
  17.         return "[" +msg+ "]";
  18.     }
  19.     public String broadcast(String msg) throws RemoteException{
  20.         return message;
  21.     }
  22.     // création du service
  23.     public static void main (String arg[]){
  24.         try{
  25.             java.rmi.registry.LocateRegistry.createRegistry(1099);
  26.             srvEcho serveurEcho=new srvEcho();
  27.             Naming.rebind("srvEcho",serveurEcho);
  28.             System.out.println("Serveur d'écho prêt" );
  29.         } catch (Exception e){
  30.             System.err.println("Erreur " + e + " lors du lancement du serveur d'écho" );
  31.         }               
  32.     }
  33. }


 
Je dois avouer que je suis perdu dans ce langage... Si vous pouvez m'éclairer et expliquer simplement j'en serais ravis.
 
Merci d'avance pour votre aide.

mood
Publicité
Posté le 06-11-2008 à 17:16:40  profilanswer
 

n°1809222
dtom
Posté le 07-11-2008 à 02:40:11  profilanswer
 

up

n°1809397
nerisson
Pic-pic
Posté le 07-11-2008 à 14:33:05  profilanswer
 

Quelle est ton erreur ?


---------------
Light is right
n°1809432
dtom
Posté le 07-11-2008 à 14:56:57  profilanswer
 

Je n'ais pas d'erreur, mais je ne sait pas comment faire pour que tout les clients recoivent le message, comme un vrai chat.

n°1809555
nerisson
Pic-pic
Posté le 07-11-2008 à 16:14:37  profilanswer
 

Est-ce que tu as lu la doc
 http://java.sun.com/j2se/1.5.0/docs/guide/rmi/


---------------
Light is right
n°1809584
dtom
Posté le 07-11-2008 à 16:36:32  profilanswer
 

...
 
Si tu ne veux pas m'aider ne me répond pas.
 
Je sais que le RMI n'est normalement pas fais pour répondre aux clients, c'est à eux de demander au serveur si il y a des nouveaux messages à recevoir... Seulement je ne sais pas comment coder celà.

n°1809591
brisssou
8-/
Posté le 07-11-2008 à 16:47:12  profilanswer
 

c'est pas juste un chat entre un client et un serveur ton exercice là ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1809636
omega2
Posté le 07-11-2008 à 17:50:05  profilanswer
 

Côté algo, il te faut un processus qui va boucler (ne pas utiliser de timer, si ça n'a pas changé, en java l'exécution des timer est faite dans le processus principal de l'application) avec une pause à chaque tour de boucle (pour ne pas prendre bêtement 100% du temps processeur) et qui va demander au serveur la liste des messages reçu récemment.
 
Après pour le reste, c'est de l'algo classique alors je pense que quelque soit ton niveau t'arriveras à t'en sortir.

n°1809683
dtom
Posté le 07-11-2008 à 21:58:52  profilanswer
 

Bien le but est d'un avoir un chat entre un serveur et des clients bien sûr, sans utiliser de threads.

n°1809907
nerisson
Pic-pic
Posté le 08-11-2008 à 18:40:18  profilanswer
 

Et si tes clients s'enregistrent auprès du serveur pour être notifies des messages ? Comme un bête listener ?


---------------
Light is right
mood
Publicité
Posté le 08-11-2008 à 18:40:18  profilanswer
 

n°1810165
dtom
Posté le 09-11-2008 à 18:19:26  profilanswer
 

Peut être... mais je suis débutant en java et je ne sait pas comment coder ça xD


Message édité par dtom le 09-11-2008 à 18:19:36
n°1810300
MEI
|DarthPingoo(tm)|
Posté le 10-11-2008 à 10:31:04  profilanswer
 

T'es débutant en Java et tu fait direct du RMI ? :o
 
Déjà clairement le RMI n'est pas vraiment fait pour faire un Chat au sens en direct, mais ca ne reste pas trop sorcier...
 
3/4 method coté serveur et après c'est au client de faire tout le boulot.
 
coté serveur il te faudrait la methode "connexion" qui renvois un ID unique, la methode "deconnexion", la methode "envoyerMessage" et la methode "recupererMessage".
 
Après bah coté serveur t'as un cache des n derniers message. Avec une classe Message qui contient par ex, l'horodatage, l'ID de l'envoyer et le contenu.  
 
Et tu renvois ces messages formater correctement au client quand ils te le demande.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1810888
dtom
Posté le 11-11-2008 à 18:19:14  profilanswer
 

Merci MEI je pense que ça va m'aider ;)
 
Sinon oui je suis débutant, on as commencé a faire brièvement du java... c'est la licence pro, on doit aller vite^^


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Aide pour un chat RMI en Java

 

Sujets relatifs
Aide pour un devoirAide sur requête SQL
besoin d'aide pour un site svp.décalge java
aide pour un programme JAVA (débutante)T'Chat particulier, besoin d'aide !
Fluxs JavaJAVA + NETBEANS + ACCESS
Plus de sujets relatifs à : Aide pour un chat RMI en Java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR