Exclusion mutuel

mourad47 - 27 avril 2013 à 00:07
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 29 avril 2013 à 08:06
bonjour a tous j'ai un probleme:
j'ai travaille avec java rmi pour exlusion mutuelle
le serveurP0 et serveurP0 lance normal mais les clientP0 est clientP0 ne lance pas
voici le code suivant
***********serverP0*************
import java.rmi.*;
import java.rmi.server.*;
// classe implأ©mentant l’أ©cho distant
public class serveurP0 extends UnicastRemoteObject implements interP0{
// constructeur
public serveurP0() throws RemoteException{
super();
}// fin constructeur
// mأ©thode modifier jeton
public static boolean jeton0;
public void modifier_jeton0(boolean b) throws RemoteException{
if(b==false) jeton0=true;
else jeton0=false;
}// fin modifier
// crأ©ation du service
public static void main (String arg[]){
try{
serveurP0 serveurmodif=new serveurP0();
Naming.rebind("serviceP0",serveurmodif);
System.out.println("Serveur P0 est pret");
} catch (Exception e){
System.err.println(" Erreur :" + e );
}
}// main
}// fin classe
************************interP0*********
import java.rmi.*;
// l'interface distante
public interface interP0 extends Remote{
public void modifier_jeton0(boolean jeton) throws java.rmi.RemoteException;
}
******************clientP0*********
import java.rmi.*;
import java.io.File;
import java.io.*;
public class clientP0 {
public static void main(String arg[]){

String urlService1="rmi://localhost:1099/serviceP0";
String urlService2="rmi://localhost:1098/serviceP1";
interP0 serveur0=null;
interP1 serveur1;
//Scanner y;
try{
// localisation du service
serveur0=(interP0) Naming.lookup(urlService1);
serveur1=(interP1) Naming.lookup(urlService2);
/*new Scanner(new File("c://tp//tp mutex//p0.txt"));
while(y.hasNext()){
int a=y.nextInt();
int b=y.nextInt();
int c=y.nextInt();
int d=y.nextInt();
int e=y.nextInt();*/

serveur0.modifier_jeton0(false);
System.out.println("P0 travallier en SC");
// SC
Thread.sleep(10000);
System.out.println("P0 sortie a SC");
// envoyer le jeton
serveur0.modifier_jeton0(true);
serveur1.modifier_jeton1(false);
// non SC
Thread.sleep(20000);
//boucle d'attendre jeton
while(serveurP0.jeton0==false){
}
//SC
System.out.println("P0 travallier en SC");
Thread.sleep(10000);
System.out.println("P0 sortie a SC");
// envoyer le jeton
serveur0.modifier_jeton0(true);
serveur1.modifier_jeton1(false);
// boucle d'attendre le jeton
while(serveurP0.jeton0==false){
}
// SC
System.out.println("P0 travallier en SC");
Thread.sleep(20000);
System.out.println("P0 sortie a SC");
// envoyer le jeton
serveur0.modifier_jeton0(true);
serveur1.modifier_jeton1(false);
// non SC
Thread.sleep(10000);
// fin de processus
System.out.println("P0 est terminé !");

System.exit(0);
// gestion des erreurs
} catch (Exception e){
System.err.println("Erreur : " + e);
System.exit(2);
}// try
}// main
}// classe
*****************serveurP1**********
import java.rmi.*;
import java.rmi.server.*;
// classe implأ©mentant l’أ©cho distant
public class serveurP1 extends UnicastRemoteObject implements interP1{
// constructeur
public serveurP1() throws RemoteException{
super();
}// fin constructeur
// mأ©thode modifier jeton
public static boolean jeton1;
public void modifier_jeton1(boolean b) throws RemoteException{
if(b==false) jeton1=true;
else jeton1=false;
}// fin modifier
// crأ©ation du service
public static void main (String arg[]){
try{
serveurP0 serveurmodif=new serveurP0();
Naming.rebind("rmi://localhost:1098/serviceP1",serveurmodif);
System.out.println("Serveur P1 est pret");
} catch (Exception e){
System.err.println(" Erreur :" + e );
}
}// main
}// fin classe
************interP1*************
import java.rmi.*;
// l'interface distante
public interface interP1 extends Remote{
public void modifier_jeton1(boolean jeton) throws java.rmi.RemoteException;
}
*************clientP1***************
import java.rmi.*;
import java.io.File;
import java.io.*;
public class clientP1 {
public static void main(String arg[]){

String urlService1="rmi://localhost:1099/serviceP0";
String urlService2="rmi://localhost:1098/serviceP1";
interP0 serveur0=null;
interP1 serveur1;
//serveurP0 srv0= new serveurP0;
//serveurP1 srv1= new serveurP1;
try{
// localisation du service
serveur0=(interP0) Naming.lookup(urlService1);
serveur1=(interP1) Naming.lookup(urlService2);
//Scanner y;
/*try{
y=new Scanner(new File("c://tp//tp mutex//p1.txt"));
while(y.hasNext()){
int a=y.nextInt();
int b=y.nextInt();
int c=y.nextInt();
int d=y.nextInt();
int e=y.nextInt();
}catch(Exception f){System.out.println(f);}*/

Thread.sleep(10000);
while(serveurP1.jeton1==false){
}
System.out.println("P1 travallier en SC");
// SC
Thread.sleep(20000);
System.out.println("P1 sortie a SC");
// envoyer le jeton
serveur1.modifier_jeton1(true);
serveur0.modifier_jeton0(false);
// non SC
Thread.sleep(10000);
//boucle d'attendre jeton
while(serveurP1.jeton1==false){
}
//SC
System.out.println("P1 travallier en SC");
Thread.sleep(20000);
System.out.println("P1 sortie a SC");
// envoyer le jeton
serveur1.modifier_jeton1(true);
serveur0.modifier_jeton0(false);
// boucle d'attendre le jeton
while(serveurP1.jeton1==false){
}
// SC
System.out.println("P1 travallier en SC");
Thread.sleep(10000);
System.out.println("P1 sortie a SC");
// envoyer le jeton
serveur1.modifier_jeton1(true);
serveur0.modifier_jeton0(false);
// fin de processus
System.out.println("P1 est terminé !");

System.exit(0);
// gestion des erreurs
} catch (Exception e){
System.err.println("Erreur : " + e);
System.exit(2);
}// try
}// main
}// classe

1 réponse

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 avril 2013 à 08:06
Salut,

Est ce que tu es certain que le fichier texte sur lequel les clients bouclent existe et contient des données lorsque tu lances le programme client ?
0
Rejoignez-nous