Chat application ne répond pas
Résolu
GFaDd
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
GFaDd Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
GFaDd Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Chat application ne répond pas
- Coco chat - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Application mobile - Guide
- Coco chat gratuit - Forum Google Chrome
- Nommez une application d'appel vidéo ou de visioconférence - Guide
2 réponses
Bonjour,
Le code qui lance le serveur et le code qui crée la Socket client sont dans les méthodes main, cette méthode est exécutée si on exécute la classe pas si on crée une instance.
En d'autre termes, lorsque vous faites :
Vous créez la fenêtre et l'afficher, le code :
N'est jamais exécuté.
La solution : déplacer le code qui se charge de dialogue client/serveur dans le client et dans le serveur de la métode main vers le constructeur de la classe pour garantir son exécution lorsque vous créez une nouvelle instance (avec un "new").
Bon Courage.
Le code qui lance le serveur et le code qui crée la Socket client sont dans les méthodes main, cette méthode est exécutée si on exécute la classe pas si on crée une instance.
En d'autre termes, lorsque vous faites :
Client cl = new Client(); cl.setVisible(true);
Vous créez la fenêtre et l'afficher, le code :
String msgin = ""; try{ ss = new ServerSocket(80); s = ss.accept(); dun = new DataInputStream(s.getInputStream()); dout = new DataOutputStream(s.getOutputStream()); while(!msgin.equals("Exit")){ msgin = dun.readUTF(); msg_area.setText(msg_area.getText().trim()+"\n"+msgin); } }catch(Exception e){}
N'est jamais exécuté.
La solution : déplacer le code qui se charge de dialogue client/serveur dans le client et dans le serveur de la métode main vers le constructeur de la classe pour garantir son exécution lorsque vous créez une nouvelle instance (avec un "new").
Bon Courage.
Merci tarek(même si c'est un peu retard), Le problème est résolu avec l'aide d'un professeur à l'université,les changements apportés sont tels que:
public class Client extends javax.swing.JFrame implements Runnable{
Au lieu de:
public class Client extends javax.swing.JFrame {
au niveau du main du client:
Thread th = new Thread(new Client()); th.start();
au lieu du:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Client().setVisible(true);
} });
try{ s = new Socket("localhost", 80);
dun = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
String msgin = "";
while(!msgin.equals("Exit")){
msgin = dun.readUTF();
msg_area.setText(msg_area.getText().trim()+"\n serveur :\t"+msgin); } }catch(Exception e){} }
puis il a ajouté en fin ce code là:
@Override public void run() {
try {
s = new Socket("localhost", 80);
dun = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
while (!msgin.equals("Exit")) {
msgin = dun.readLine();
msg_area.setText(msg_area.getText()+"\n"+msgin); // s.close(); }
} catch (Exception e) { System.out.println("0001"); e.printStackTrace(); }
}
}
et enfin le code du bouton dans le Jframe qui va appeler le client:
Thread th = new Thread(new Client());
th.start();
public class Client extends javax.swing.JFrame implements Runnable{
Au lieu de:
public class Client extends javax.swing.JFrame {
au niveau du main du client:
Thread th = new Thread(new Client()); th.start();
au lieu du:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Client().setVisible(true);
} });
try{ s = new Socket("localhost", 80);
dun = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
String msgin = "";
while(!msgin.equals("Exit")){
msgin = dun.readUTF();
msg_area.setText(msg_area.getText().trim()+"\n serveur :\t"+msgin); } }catch(Exception e){} }
puis il a ajouté en fin ce code là:
@Override public void run() {
try {
s = new Socket("localhost", 80);
dun = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
while (!msgin.equals("Exit")) {
msgin = dun.readLine();
msg_area.setText(msg_area.getText()+"\n"+msgin); // s.close(); }
} catch (Exception e) { System.out.println("0001"); e.printStackTrace(); }
}
}
et enfin le code du bouton dans le Jframe qui va appeler le client:
Thread th = new Thread(new Client());
th.start();