IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Problème compatibilité Swing et Réseau


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut Problème compatibilité Swing et Réseau
    Bonjour,

    Dans le cadre du développement d'un jeu de plateau (plus précisément les fonctionnalités pour permettre à deux joueurs de jouer en réseau), je me trouve confronté à un petit problème auquel je ne trouve pas de solution.
    Je m'explique :

    J'ai d'un coté une interface GUI dans laquelle il y a un menu Server -> Create/Join
    Voici le code de ce menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    	 /** 
              * Classe d'interaction avec le menu 
              */
    	 public class MenuListener implements ActionListener {
     
    		 public void actionPerformed(ActionEvent e) {
    		     String cmd = e.getActionCommand();
    		     if (cmd == "Quit") {
    		    	 System.exit(0);
    		      }
    		     else if (cmd == "New Game") {
    		    	 plateau.newGame();
    		     }
    		     else if (cmd == "About"){
    		    	 new About();
    		     }
    		     else if (cmd == "Help"){
    		    	 new Help();
    		     }	 
    		     else if (cmd == "Create"){
    		    	 new Thread(new Server()).start();
    		     }	
    		     else if (cmd == "Join"){
    		    	new Thread(new Client()).start();
    		     }	
    		 }
    J'ai créé le server et le client dans un nouveau Thread pour empêcher l'interface de se figer.
    Voici à présent les codes de Server et Client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class Server implements Runnable{
     
     
     
    	public void run(){
    		try{
    			int port = 10022;
    			ServerSocket sersoc = new ServerSocket(port);
    			System.out.println("Système activé sur le port : "+port);
    			while(true){
    				Socket soc = sersoc.accept();
    				InputStream in = soc.getInputStream();
    				BufferedReader entree = new BufferedReader (new InputStreamReader(in));
    				String message = entree.readLine();
    				System.out.println("message recu par le serveur = " + message);
    			}
    		}
    		catch(Exception e){
    			System.out.println(e);
    		}
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class Client implements Runnable {
     
     
    	public void run() {
    		try{
    			String hote = "127.0.0.1";
    			int port = 10022;
    			Socket soc = new Socket(hote,port);
    			OutputStream out = soc.getOutputStream();
    			OutputStreamWriter sortie = new OutputStreamWriter(out);
    			sortie.write("coucou!");
    			sortie.flush();
    		}
    		catch(IOException e){
    			System.out.println(e);
    		}
     
    	}
     
    }
    Et voici le problème rencontré : Quand je crée un serveur, tout se passe bien, quand je crée un client pour le rejoindre tout se passe bien. Mais le serveur bloque à l'instruction "sortie.readLine()" pendant 1 à 2 minutes avant d'afficher le "coucou" envoyé par le client...

    De plus, quand je crée uniquement deux classes non liée et que je place le contenu des classes ci dessus dans une classe main, et que j'exécute, le coucou s'affiche immédiatement...

    J'imagine que le problème se situe peut-être au niveau des différents Thread mais sinon je n'en ai vraiment aucune idée, et 30 secondes de "lag" avant le début de réception est assez gênant!

    Merci d'avoir eu le courage de me lire et si vous avez une idée... N'hésitez pas D'avance merci!

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    \o/

    Un grand merci

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par Mithandir Voir le message
    Mais le serveur bloque à l'instruction "sortie.readLine()"
    je pense que tu voulais parler de 'entree.readLine()'

    Sinon, as-tu essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie.write("coucou!\n");
    En effet, j'aurais tendance à penser que readLine() attend de rencontrer un caractère de fin de ligne avant de retourner le String ; or tu n'envoies que quelques caractères sans retour à la ligne.

  5. #5
    Membre expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Par défaut
    Essai cette syntaxe d'envoie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Pour l'envoi à partir du client
    PrintStream fluxSortie = new PrintStream(soc.getOutputStream());
    fluxSortie.println("Coucou");
    pour le serveur et le client il faut impérativement fermer le socket.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    soc.close();  //juste après l'affichage de la reponse pour le serveur et tjr ds la boucle

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    Merci pour toute vos réponses... En effet, après test, c'est bien le caractère de fin qui manquait (\n), et de plus je ne fermais pas le socket.


  7. #7
    Membre expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Par défaut
    C'est pouqoui je te conseille cette syntaxe qui ecri à la fin de ton message un \n
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fluxSortie.println("Coucou");

    Merci de ne pas oublier le tag RESOLU

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème compatibilité / utilisateur réseau
    Par Ludie_Devcom dans le forum Windows 7
    Réponses: 10
    Dernier message: 11/11/2011, 10h10
  2. Problème compatibilité PERL SH CSH
    Par minusette dans le forum Modules
    Réponses: 7
    Dernier message: 03/10/2005, 10h03
  3. Réponses: 3
    Dernier message: 26/09/2005, 15h20
  4. [HTML] Probléme compatibilité Mozilla
    Par hedgehog dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/06/2005, 09h30
  5. problème compatibilité IE
    Par Shivaneth dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 03/05/2005, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo