Accueil > > > CAFE MONNAIE SUR SERVEUR EN RMI
CAFE MONNAIE SUR SERVEUR EN RMI
Information sur la source
Description
Cafe monnaie est un distributeur automatique de cafe, distributeur que je modelise par un serveur distant(au fait que j'ai testé sur ma machine locale)permet de servir du cafe au client en fonction des pieces qu'il entre.Les pièces acceptées sont de 1F,2F et 5F.Il vous rend ensuite la monnaie si monnaie il y a!!! C'est une application RMI très simple pour comprendre l'invocation des méthodes à distance. Vous trouverez dans le zip tous les fichiers compilés.Définir le classpath et lancez rmiregistry dans le shell DOS puis le serveur ServImpl.java et enfin lancez le clien Monclient.java Enjoy!!!
Source
- Interface
-
- /**
- * @(#)MyInterface.java
- *
- *
- * @author serge toure
- * @version 1.00 2008/5/6
- */
- import java.rmi.*;
-
- public interface MyInt extends Remote {
-
- public int checkpiece(int piece) throws RemoteException;
- public String bilan()throws RemoteException;
- public String checkforchange() throws RemoteException;
- public void init()throws RemoteException;
- public int totalDebit(int cb,int chq,int virmt) throws RemoteException;
- public float percent(int val, int total) throws RemoteException;
-
- }
-
-
- Le serveur
-
- /**
- * @(#)MyserverImpl.java
- *
- *
- * @author serge toure
- * @version 1.00 2008/5/6
- */
-
- import java.rmi.server.*;
- import java.rmi.*;
- import java.net.*;
-
-
-
- public class servImpl extends UnicastRemoteObject implements MyInt {
-
-
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- int nbPiece1F=0;int nbPiece2F=0;int nbPiece5F=0;
- int totalRecu=0;
-
- public servImpl() throws RemoteException {
- super();
- }
-
-
-
-
-
- public int checkpiece(int piece) throws RemoteException{
-
-
- switch(piece){
- case 1:
- nbPiece1F=nbPiece1F+1;
- break;
- case 2:
- nbPiece2F=nbPiece2F+1;
- break;
- case 5:
- nbPiece5F=nbPiece5F+1;
- break;
- default:
- piece=0;
-
- }
- totalRecu=totalRecu+piece;
- return totalRecu;
- }
-
- public String bilan() throws RemoteException{
-
- return ("Vous avez entrés:\n"+
- +nbPiece1F+" piece(s) de 1F \n"
- +nbPiece2F+" piece(s) de 2F \n"
- +nbPiece5F+" piece(s) de 5F \n"
- +"Soit un total de :"+totalRecu+ "F\n"
-
-
- +"Je vous serre un cafe");
- }
-
-
-
-
-
-
-
- public String checkforchange() throws RemoteException{
- int change=0;
- if(totalRecu>3)
- change=totalRecu-3;
- return "Et je vous rends la monnaie de valeur:"+change+"F";
-
- }
-
- public void init()throws RemoteException{
-
- nbPiece1F=0;
- nbPiece2F=0;
- nbPiece5F=0;
- totalRecu=0;
-
-
- }
-
- public int totalDebit(int cb,int chq,int virmt) throws RemoteException{
-
- int nbDebit=0;
- nbDebit=cb+chq+virmt;
- return nbDebit;
- }
-
- public float percent(int val, int total) throws RemoteException{
-
- float prct=0;
- prct=(float)(val *100/total);
- return prct;
- }
-
-
-
-
-
- public static void main (String[]args){
-
- try{
- servImpl s=new servImpl();
- Naming.rebind("myserver",s);
- System.out.println("Server ready to work now!");
- }
- catch(RemoteException e){
- System.out.println("RemoteException "+ e);
- }
- catch(MalformedURLException e){
- System.out.println("Malformed "+e);
- }
- }
-
-
- }
-
-
- Le client
-
- /**
- * @(#)Myclient.java
- *
- *
- * @author serge toure
- * @version 1.00 2008/5/6
- */
-
-
- import java.rmi.*;
- public class Monclient {
-
-
- public static void main(String[]args) {
- int piece,total;
- char rep='o';
- String mess1,mess2;
- int nbCb=0,nbChq=0,nbVirmt=0,nbDebit=0;
- float prctCb=0,prctChq=0,prctVirmt=0;
- try{
- MyInt n=(MyInt)Naming.lookup("rmi://sergetoure:1099/myserver");
- System.out.println("");
- System.out.println("");
- System.out.println("");
- System.out.println("************************Bienvenue au cafe monnaie!******************************");
-
- do{
-
- System.out.println("Entrer au moins 3F pour obtenir un cafe");
- System.out.println("Les pieces acceptées sont:1F,2F et 5F");
- do{
- piece=Lire.i();
- if((piece!=1)&& (piece!=2 )&&( piece!=5)){
-
- System.out.println("Veuillez entrer une piece de 1F,2F ou de 5F SVP!");}
- total=n.checkpiece(piece);
- }while(total<3);
- mess1=n.bilan();
- System.out.println(mess1);
- mess2=n.checkforchange();
- System.out.println(mess2);
-
- n.init();
-
- System.out.println("Voulez vous en un autre? o/n");
- do{
- System.out.println("Entrer 'o' pour continuer et 'n' pour quitter!");
-
- rep=Lire.c();
-
- }while ((rep!='o')&&(rep!='n'));
-
- }while(rep=='o');
- System.out.println("Merci d'avoir utilise cafe monnaie *BONNE JOURNEE A VOUS*");
- System.out.println("");
- System.out.println("");
- System.out.println("");
-
-
- System.out.println("*********************STATISTIQUE*****************************");
-
-
- System.out.println("Nombre de paiements par carte bleue: ");
- nbCb=Lire.i();
-
- System.out.println("Nombre de paiements par chèque: ");
- nbChq=Lire.i();
-
- System.out.println("Nombre de paiements par virements: ");
- nbVirmt=Lire.i();
-
- nbDebit=n.totalDebit(nbCb,nbChq,nbVirmt);
-
- prctCb=n.percent(nbCb,nbDebit);
- prctChq=n.percent(nbChq,nbDebit);
- prctVirmt=n.percent(nbVirmt,nbDebit);
-
-
- System.out.println("Nombre total d'ordres de débits emis:"+nbDebit);
- System.out.println("Pourcentage de paiements par carte bleue: "+prctCb +"%");
- System.out.println("Pourcentage de paiements par chèques: "+prctChq+ "%");
- System.out.println("Pourcentage de paiements par virements: "+prctVirmt+ "%");
-
-
- }
- catch(Exception e){
- System.out.println("Exception :"+e);
- }
- }
- }
Interface
/**
* @(#)MyInterface.java
*
*
* @author serge toure
* @version 1.00 2008/5/6
*/
import java.rmi.*;
public interface MyInt extends Remote {
public int checkpiece(int piece) throws RemoteException;
public String bilan()throws RemoteException;
public String checkforchange() throws RemoteException;
public void init()throws RemoteException;
public int totalDebit(int cb,int chq,int virmt) throws RemoteException;
public float percent(int val, int total) throws RemoteException;
}
Le serveur
/**
* @(#)MyserverImpl.java
*
*
* @author serge toure
* @version 1.00 2008/5/6
*/
import java.rmi.server.*;
import java.rmi.*;
import java.net.*;
public class servImpl extends UnicastRemoteObject implements MyInt {
/**
*
*/
private static final long serialVersionUID = 1L;
int nbPiece1F=0;int nbPiece2F=0;int nbPiece5F=0;
int totalRecu=0;
public servImpl() throws RemoteException {
super();
}
public int checkpiece(int piece) throws RemoteException{
switch(piece){
case 1:
nbPiece1F=nbPiece1F+1;
break;
case 2:
nbPiece2F=nbPiece2F+1;
break;
case 5:
nbPiece5F=nbPiece5F+1;
break;
default:
piece=0;
}
totalRecu=totalRecu+piece;
return totalRecu;
}
public String bilan() throws RemoteException{
return ("Vous avez entrés:\n"+
+nbPiece1F+" piece(s) de 1F \n"
+nbPiece2F+" piece(s) de 2F \n"
+nbPiece5F+" piece(s) de 5F \n"
+"Soit un total de :"+totalRecu+ "F\n"
+"Je vous serre un cafe");
}
public String checkforchange() throws RemoteException{
int change=0;
if(totalRecu>3)
change=totalRecu-3;
return "Et je vous rends la monnaie de valeur:"+change+"F";
}
public void init()throws RemoteException{
nbPiece1F=0;
nbPiece2F=0;
nbPiece5F=0;
totalRecu=0;
}
public int totalDebit(int cb,int chq,int virmt) throws RemoteException{
int nbDebit=0;
nbDebit=cb+chq+virmt;
return nbDebit;
}
public float percent(int val, int total) throws RemoteException{
float prct=0;
prct=(float)(val *100/total);
return prct;
}
public static void main (String[]args){
try{
servImpl s=new servImpl();
Naming.rebind("myserver",s);
System.out.println("Server ready to work now!");
}
catch(RemoteException e){
System.out.println("RemoteException "+ e);
}
catch(MalformedURLException e){
System.out.println("Malformed "+e);
}
}
}
Le client
/**
* @(#)Myclient.java
*
*
* @author serge toure
* @version 1.00 2008/5/6
*/
import java.rmi.*;
public class Monclient {
public static void main(String[]args) {
int piece,total;
char rep='o';
String mess1,mess2;
int nbCb=0,nbChq=0,nbVirmt=0,nbDebit=0;
float prctCb=0,prctChq=0,prctVirmt=0;
try{
MyInt n=(MyInt)Naming.lookup("rmi://sergetoure:1099/myserver");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("************************Bienvenue au cafe monnaie!******************************");
do{
System.out.println("Entrer au moins 3F pour obtenir un cafe");
System.out.println("Les pieces acceptées sont:1F,2F et 5F");
do{
piece=Lire.i();
if((piece!=1)&& (piece!=2 )&&( piece!=5)){
System.out.println("Veuillez entrer une piece de 1F,2F ou de 5F SVP!");}
total=n.checkpiece(piece);
}while(total<3);
mess1=n.bilan();
System.out.println(mess1);
mess2=n.checkforchange();
System.out.println(mess2);
n.init();
System.out.println("Voulez vous en un autre? o/n");
do{
System.out.println("Entrer 'o' pour continuer et 'n' pour quitter!");
rep=Lire.c();
}while ((rep!='o')&&(rep!='n'));
}while(rep=='o');
System.out.println("Merci d'avoir utilise cafe monnaie *BONNE JOURNEE A VOUS*");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("*********************STATISTIQUE*****************************");
System.out.println("Nombre de paiements par carte bleue: ");
nbCb=Lire.i();
System.out.println("Nombre de paiements par chèque: ");
nbChq=Lire.i();
System.out.println("Nombre de paiements par virements: ");
nbVirmt=Lire.i();
nbDebit=n.totalDebit(nbCb,nbChq,nbVirmt);
prctCb=n.percent(nbCb,nbDebit);
prctChq=n.percent(nbChq,nbDebit);
prctVirmt=n.percent(nbVirmt,nbDebit);
System.out.println("Nombre total d'ordres de débits emis:"+nbDebit);
System.out.println("Pourcentage de paiements par carte bleue: "+prctCb +"%");
System.out.println("Pourcentage de paiements par chèques: "+prctChq+ "%");
System.out.println("Pourcentage de paiements par virements: "+prctVirmt+ "%");
}
catch(Exception e){
System.out.println("Exception :"+e);
}
}
}
Conclusion
Ce programme est très basique et permettra a ceux qui veulent connaitre RMI de s'y attacher davantage! Merci
Historique
- 09 mai 2008 13:08:29 :
- erreur syntaxe
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
RMI [ par Aldee ]
Quelle configuration minimum me faut-il pour tester une liaison RMI? Un/Deux ordinateur "basique" avec Java, deux cartes reseaux et une ficelle entre?
java rmi [ par scorpionetoile ]
salut a toutje veus tester un petit exemple en java utilisant rmi,je l'ai execute sur mon poste mais le problemec'est que je veus l'executer sur 2 pos
RMI REGISTRY [ par efr ]
efrEst il possible de m'expliquer comment fonctionne la méthode Http Post avec RMI pour eviter les firewalls
envoyer un fichier en RMI [ par lutecefalco ]
Salut à tous,j'ai à disposition un serveur avec le logiciel R d'installé dessus.A partir de mon PC, je génère un script et je dois l'envoyer en RMI su
Communication RMI [ par homersimp ]
J'aimerai relié une applet et une servlet. Mais comme la communication RMI ne marche pas toujours, je voudrais que l'applet essaie d'abord de ce conn
Rmi et Jnlp [ par homersimp ]
Mon but est de réaliser une applet dans un fichier jnlp, qui devrait se connecter à une servlet sur serveur(avec exemple de DaytimeServer et applet.Si
RMI et Visual J++ [ par egamir ]
J'ai développé une classe java "client.java" avec la SDK de sun (qui s'exécute parfaitement avec la jvm de sun).Cette classe importe le package java.r
RMI et Visual J++ [ par egamir ]
J'ai développé une classe java "client.java" avec la SDK de sun (qui s'exécute parfaitement avec la jvm de sun).Cette classe importe le package java.r
Problème JAVA RMI Hello World [ par missgaelle ]
Bonsoir à tous,Voilà, je viens de créer un hello world en JAVA avec rmi...ah oui, détail importante, je ne suis qu'un mini débutante en prog, on me de
RMI => Problemes d'IPs [ par Bulzebok ]
J'ai chez moi 2 PC, l'un et mon PC usuel et l'autre et simplement une passerel pour allez sur le NET et qui tourne en permanence et ki soulage le prem
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|