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

  FORUM HardWare.fr
  Programmation
  Java

  [Java/net] Comment debloquer un serversocket.accept() proprement ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java/net] Comment debloquer un serversocket.accept() proprement ?

n°1313735
djar
Posté le 26-02-2006 à 14:34:40  profilanswer
 

Salut les amis !
 
J'ai une petite question: je cherche à savoir comment on fait pour débloquer un serversocket.accept() lequel est dans un thread ?
voici un bout de code:
 

Code :
  1. import java.net.*;
  2. import java.util.*;
  3. import java.io.*;
  4. import javax.swing.DefaultListModel;
  5. /** Premier test de classe de thread en utilisant la
  6. *  technique qui consiste à dériver de la classe Thread.
  7. */
  8. public class ThreadWaitConnexion extends Thread {
  9.     /** Un attribut propre à chaque thread */
  10.     private String _threadName;
  11.     private NetworkGame _networkGame;
  12.     /** Création et démarrage automatique du thread */
  13.     public ThreadWaitConnexion(String threadName, NetworkGame ng) {
  14.      this._networkGame = ng;
  15.         this._threadName = threadName;
  16.         this.start();
  17.     }
  18.     /** Le but d'un tel thread est d'attendre une serie de connexions
  19.      */
  20.     public void run() {
  21.      try {
  22.       String text = new String();
  23.   // Attente de connexion (bloquant)
  24.   Socket remote = _networkGame.getServerSocket().accept();       //// ICI ////
  25.   _networkGame.addPlayerSocket(remote);
  26.   // Obtenir le pseudo.
  27.   String pseudo = _networkGame.readSequence(remote);
  28.   ((DefaultListModel)(_networkGame.getPlayersList().getModel())).addElement(pseudo);
  29.   _networkGame.sendFigurePath(remote);
  30.      }
  31.      catch(Exception err) {
  32.   System.err.println("> Erreur dans " + getClass() + " ! " + err);
  33.      }
  34.     }
  35. }


Message édité par djar le 26-02-2006 à 14:46:49
mood
Publicité
Posté le 26-02-2006 à 14:34:40  profilanswer
 

n°1313741
nraynaud
lol
Posté le 26-02-2006 à 14:54:03  profilanswer
 

1) ça sert à rien de sous-classer Thread, fais un simple Runnable.
 
2) que comptes-tu faire après avoir débloqué le thread ? car la réponse en dépendra.

n°1313749
djar
Posté le 26-02-2006 à 15:10:14  profilanswer
 

Merci !
en fait, je ne sais pas à l'avance combien de joueurs il y aura dans la partie, c'est du coté serveur que la personne va choisir d'arreter d'attendre et commencer la partie avec tous les sockets connecté. d'où l'arret du thread...

n°1313750
djar
Posté le 26-02-2006 à 15:10:48  profilanswer
 

Zut, c'est pas le code complet: il manque une boucle dans le thread ! Mais bon je vous laisse imaginer


Message édité par djar le 26-02-2006 à 15:13:59
n°1313759
nraynaud
lol
Posté le 26-02-2006 à 15:27:30  profilanswer
 

ok, bah je te propose la méthode suivante :  
Il faut que ce thread se contente d'accepter les inscriptions et les inscrit dans une collection accessible depuis d'autres threads.
 
quand l'utilisateur décide que c'est fini, il envoie interrupt() au thread, qui devrait mourir simplement.
 
l'autre solution, c'est d'utiliser les java.nio.

n°1313787
djar
Posté le 26-02-2006 à 16:14:45  profilanswer
 

Mille merci !!


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

  [Java/net] Comment debloquer un serversocket.accept() proprement ?

 

Sujets relatifs
Ouvrir un form en javaJava et XML...Exporter un Xml avec DOM
[JAVA] attendre autrement qu'avec une boucle vide[Java] Problème d'avant plan d'un canvas
UML et Java[JAVA] Redimensionner une image via une matrice
[Java ] api avec vue et editeurprobleme Mysql / java
[ java ] comment créé un fichier + d'autes question dans le futur..[Hibernate]Filtrer une requete avec une methode java
Plus de sujets relatifs à : [Java/net] Comment debloquer un serversocket.accept() proprement ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)