Bonsoir
Comme vous pouvez vous en doutez, j'ai un petit problème avec une source, et comme tous les débutants, c'est sur des problèmes d'égalité ^^
J'ai une classe qui me permet de stocker diverses infos dont entre autre:
class Table{
private boolean connecte;
public boolean estConnecte(){
if (connecte)
return true;
else
return false;
}
public Table (int n, String i, int po, boolean c){
this.num=n;
this.ip=i;
this.port=po;
this.connecte=c;
System.out.println("Client "+num+" ajoute a la table" );
}
et quand je me sert de la classe dans, j'ai un probleme (en fait j'en ai 2 ^^ )
class Client{
Thread param;
public Client(){
//creation d'un vecteur qui contiendra les paramètre des clients
v = new Vector();
//ajout des 4 clients
v.addElement (new Table(1,"127.0.0.1",5000,false));
v.addElement (new Table(2,"127.0.0.1",6000,false));
v.addElement (new Table(3,"127.0.0.1",7000,false));
v.addElement (new Table(4,"127.0.0.1",8000,false));
param = new Thread(this);
param.run();
}
public void run(){
int i=0;
Socket tmp=null;
Table t;
while (true){
while (i<4){ //on parcours toutes les cases du vecteur
t=(Table)v.elementAt(i); //recupération de l'élément courant de type Table
if ((t.estConnecte()).equals(false)){ //si le client courant n'est pas déja connecte
try{
tmp=new Socket(t.getIp(),t.getPort()); //on cree une socket vers lui
}
catch (Exception e){};
if (tmp != null){ //si cette socket est bien cree, c'est que le client est connecté
t.setStatus(true); //on change son statut
i++; //on passe au client suivant
}
System.out.println("Client n"+t.getNum()+" ip: "+t.getIp()+" port: "+t.getPort()+" pseudo: "+t.getPseudo()+" connecte?: "+t.estConnecte());
}
else //s'il est déja connecté
i++; //on passe au client suivant
}
try{
param.wait(500); //on attend 500ms avant de boucler
}
catch (InterruptedException ex){
ex.printStackTrace();
}
}
}
}
Citation :
if ((t.estConnecte()).equals(false))
|
Le probleme est la:
Quand je compile, j'ai un message qui me dit "boolean cannot be dereferenced".
J'ai regardé un peu sur le net ce que je pouvais trouver et j'ai vu ca http://forums.java.sun.com/thread. [...] ID=3964338. Si j'ai bien compris, je peux pas utiliser la fonction equals() sur false puisque c'est un type primitif et qu''il n'a pas de methode.
Je peux pas utiliser non plus == puisque ca compare les références... bon, j'ai quand même essayé et effectivement, ca marche pas
du coup, comment je fais?
Citation :
param.wait(500);
|
Mon autre problème se situe au niveau du wait, même si la je dois avouer que j'ai pas encore trop cherché. Quand je lance le fichier, il me met
"Exception in thread "main" java.lang.IllegalMonitorStateException: current thread not owner"
Il me semble avoir vu que pour seul le proprietaire du thred peut lancer la methode wait, mais si param n'est pas proprietaire, qui l'est?