Client / serveur

Résolu
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 12 oct. 2007 à 19:54
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 13 oct. 2007 à 13:30
Bonjour à tous.

Comment est ce que je peux faire pour que le service que je rende soit toujours à l'écoute d'une quelconque demande :

Serveur => (lance le) Service
Service <-----> (comunique avec) Client

j'ai essayé une boucle "while (true) { ... }" mais ca ne marche pas. Lorsque je fait appel à la même fonction deux fois de suite (ou une autre), ca plante. C'est comme si la lecture des requettes (côter service) ne se faisait qu'une seul fois.

PS: pour communiqer j'utilise des Obect ( donc ObjectInputStream et ObjectOutputStream ).

merci.

3 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
12 oct. 2007 à 23:10
perso faire des trucs de ce genre :

public void run() {
try {
Message m;
for (;;) {
ObjectInputStream in = new ObjectInputStream(c.getInputStream());
m = (Message) in.readObject();
conf.messageReceived(m);

}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

ca m'arrive assez souvent je n'ai jamais eut de probleme


"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
3
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
12 oct. 2007 à 20:16
Bonjour à tous.
je joint un des codes que j'ai essayé :

public class Service {
 
 
 //La socket correspondant au client venant d'être accepté
 private Socket sService;
 
 
 //Les flux d'entrée et de sortie
 private ObjectInputStream in = null;
 private ObjectOutputStream out = null;
 
 
 public Service (Socket sS) {
  
  try {
   
   //On init la socket correspondant au client
   sService = sS;
   
   //On init les flux d'entré et de sortie
   in = new ObjectInputStream(sService.getInputStream());
   out = new ObjectOutputStream(sService.getOutputStream());
   
   //
   while (in.readObject() != null) {
    
    Object o = in.readObject();
    
    if (o instanceof String) {
     out.writeObject("[seveur] " + (String)o);
     out.flush();
    }else {
     out.writeObject("[seveur] " + (Object)o);
     out.flush();
    }
    
   }
   
   //On ferme la connection
   sService.close();
   
  }catch (Exception ex) {
   
  }
  
 }
 
}

Ils se ressemblent tous plus ou moins.
merci.
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
13 oct. 2007 à 13:30
slt.
Merci pour le morceau de code; tu init tes flux à chaque fois (ce que je ne faisait pas).
J'ai ré-écrit le code et à présent, il fonctionne correctement.
merci.
0
Rejoignez-nous