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