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

  FORUM HardWare.fr
  Programmation
  Java

  Jeu Client/Serveur A l'aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Jeu Client/Serveur A l'aide

n°1082587
Linbeg
Posté le 13-05-2005 à 17:13:39  profilanswer
 

Bonjour à tous,  
voila je développe actuellement un jeu en java
il se joue à deux, un client et un serveur.
Le problème c'est que je lance un processus chez le Client pour qu'il envoie des messages au serveur
mais j'ai juste besoin d'envoyer des messages à certains moments, quand le client appui sur des bouton
ces boutons ne sont pas dans la meme classe que la connection.
Mais une fois mon processus lancé chez le client j'ai une boucle while et j'arrive à une impasse,  
soit il se déconnecte du serveur quand je sors de la boucle
soit il ne fait pas attention aux boutons sur lesquels je clik parce qu'il est bloqué dans sa boucle
 
je voudrais savoir en fait comment je pourrais mettre mon processus en pause et le reprendre seulement quand je clik
ci dessous mon prog client  
la méthode envoiMessage() est celle qui devrait normalement réactiver le processus
 
t java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
 
public class Client extends Frame implements Runnable, ActionListener  
{
 boolean connecte = false;
 public boolean ended = false;
 
 String leTexte = "";
 int portServeur;
    String adresseServeur;
    Thread processus=null;
    Label conn=new Label("Cliquez pour connection" );
    Socket sk;
    BufferedReader depuisServeur;
    PrintWriter versServeur;
    Panel p=new Panel();
     
    public Client(String adresse, int port)  
    {
     portServeur=port;
        adresseServeur=adresse;
         
        //création de l'interface
          p.setBackground(Color.white);
          add(BorderLayout.CENTER,p);
          p.setLayout(new GridLayout(2,1));
          p.add(conn);
          conn.setAlignment(Label.CENTER);
          Panel p1=new Panel();
          p.add(p1);
          Button b=new Button("Connexion" );
          p1.add(b);
          b.addActionListener(this);
          pack();
       
    }//Client()
     
    public void connect()  
    {
     try  
     {
         sk=new Socket(adresseServeur,portServeur);
            depuisServeur=new BufferedReader(new InputStreamReader(sk.getInputStream()));
            versServeur=new PrintWriter(new OutputStreamWriter(sk.getOutputStream()),true);
        }  
        catch (Exception e) {}  
    }//connect()
     
    public void disconnect()  
    {
     try  
     {
         sk.close();
        }  
        catch (IOException e) {}
    }//disconnect()
     
    public void run()  
    {
     boolean fini=false;
        try  
        {
            String ligne;
            String rep;
             
            connect();
             
            while(!fini)
            {            
             ligne=depuisServeur.readLine();
             System.out.println("OK" );
             System.out.println(leTexte);
             
             if(ligne.equals("connecte" ))  
             {
              setVisible(false);
              versServeur.println("OK" );
             }
             if(ligne.equals("OK" ))
             {
              versServeur.println(leTexte);
             }
            }
             
        }  
        catch (IOException e)  
        {
         conn.setText("Connexion impossible." );
        }  
        finally  
        {
         processus=null;
        }
         
    }//run()
     
    public void actionPerformed(ActionEvent e)  
    {              
     //processus d'attente des messages
        processus = new Thread(this);
        processus.start();
             
    }//actionPerformed()
 
    public Client(String adresse, String port)  
    {
     System.out.println("Chargement en cours..." );
        String adr="localhost";
        if (adresse!=null) adr=adresse;
         
        int p=2201;
        if (port != null)  
        {
         try  
         {
             p=Integer.parseInt(port);
            }
         catch (Exception e) {p=2201;}
        }  
        Client cli=new Client(adr,p);
        cli.setTitle("Connexion" );
        cli.setVisible(true);
    }//Client()
     
    public void envoiMessage(String telTexte)
    {
        String ligne ="";
        leTexte = telTexte;
        System.out.println(leTexte);
    }//envoiMessage()
 
}//class Client

mood
Publicité
Posté le 13-05-2005 à 17:13:39  profilanswer
 

n°1082615
Linbeg
Posté le 13-05-2005 à 17:45:57  profilanswer
 

En fait je crois que je vais simplifier ma question par ce que la c un peu embrouiller
 
Y'a t-il une méthode pour mettre en pause un Thread et une autre pour le remettre en route??
 
Merci d'avance

n°1082878
kruso
Posté le 13-05-2005 à 23:22:19  profilanswer
 

Je ne sais pas si ça peut t'aider, mais j'ai fait un jeu (de go) avec client/serveur et ce que j'ai fait c'est un timer qui envoit toutes les secondes un message au serveur et recoit une reponse en retour. J'ai definit une constante pour les messages non significatifs et qui est le message par defaut.Ca te permet de faire ce que tu veux entre deux tops du timer. Tu peut peut-etre essayer de l'adapter à ton problème...


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

  Jeu Client/Serveur A l'aide

 

Sujets relatifs
aide: truc tout con en labview pour tableauxaide: pb labview tableaux! pb basique!
quel est mon type de serveur pour certificat SSL?[Caml] Aide pour une fonction
Probleme de requete sous access svp aide[RESOLU] - IIS - Serveur indisponible
besoin d'aide sur vba pour une conditionFtp_*list sur serveur windows en PHP 5
demande aide pour regex pas facileDesign de serveur de socket
Plus de sujets relatifs à : Jeu Client/Serveur A l'aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR