Bug lors de la réception du serveur

balbinus Messages postés 19 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 2 juillet 2004 - 10 mars 2004 à 19:35
balbinus Messages postés 19 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 2 juillet 2004 - 11 mars 2004 à 21:43
J'ai fait un programme client qui marche bien, sauf à un moment : quand il faut qu'il reçoive les données du serveur. Il y a deux lignes à la suite qu'il refuse de recevoir.... D'où peut venir ce problème ? Peut-être y a-t-il un passage à la ligne qui déconne ?

6 réponses

PROMETHEE111 Messages postés 12 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 10 juin 2004
11 mars 2004 à 15:12
PROMETHEE

salut,

tu peux poster ton source?
0
balbinus Messages postés 19 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 2 juillet 2004
11 mars 2004 à 17:47
Tout l'important doit être là :
  public void Connexion()
  {
    try
    {
      String reponse = "";

      // Connexion au serveur
      ConnecterFRUK();
      RecevoirDuServeurFRUK();

      // Nom d'utilisateur
      EnvoyerNomUtilisateur();
      RecevoirDuServeurFRUK();
      
      // Mot de passe
      EnvoyerMotDePasse();
      RecevoirDuServeurFRUK();
      RecevoirDuServeurFRUK();
      RecevoirDuServeurFRUK();
      
      // Status
      Thread t = new ThreadStatus(texteEchanges, departServeurFRUK, retourServeurFRUK);
    }
    catch(IOException exception) { exception.printStackTrace(); }
  }

  private void ConnecterFRUK() throws IOException
  {
    socketClient = new Socket(HOTE_FRUK, PORT_FRUK);
    departServeurFRUK = new PrintWriter(socketClient.getOutputStream());
    retourServeurFRUK = new BufferedReader(new InputStreamReader(socketClient.getInputStream()));
  }

  private void DeconnecterFRUK() throws IOException { socketClient.close(); }

  private void EnvoyerAuServeurFRUK(String phrase) throws IOException
  {
    Renvoyer(phrase);
    departServeurFRUK.print(phrase + "\r\n");
    departServeurFRUK.flush();
  }

  private String RecevoirDuServeurFRUK() throws IOException
  {
    String reponse = retourServeurFRUK.readLine();
    Renvoyer(reponse);
    return(reponse);
  }

  private void EnvoyerNomUtilisateur() throws IOException { EnvoyerAuServeurFRUK(nomUtilisateur); }
  
  private void EnvoyerMotDePasse() throws IOException { EnvoyerAuServeurFRUK(motDePasse); }

  private void QuitterFRUK() throws IOException { EnvoyerAuServeurFRUK("q"); }

  private void Renvoyer(String phrase) { System.out.println(phrase); }


class ThreadStatus extends Thread
{
public ThreadStatus(JTextArea ta, PrintWriter depart, BufferedReader retour)
{
status = ta;
departServeurFRUK = depart;
retourServeurFRUK = retour;
this.run();
}

public void run()
{
try
{
//StringBuffer retour = new StringBuffer("");
int ret = 15;
departServeurFRUK.print("status\n");
departServeurFRUK.flush();
while(ret > 0)
{
ret = retourServeurFRUK.read();
System.out.print(ret);
//retour.append(ret);
}
//System.out.println(retour.toString());
}
catch(IOException e) { e.printStackTrace(); }
}

private JTextArea status;
private PrintWriter departServeurFRUK;
private BufferedReader retourServeurFRUK;
}


Le problème vient du status, qui, au lieu de recevoir les 5 lignes, ne reçoit que la première... et reste bloqué dessus !

Si tu peux m'aider...
0
PROMETHEE111 Messages postés 12 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 10 juin 2004
11 mars 2004 à 18:17
PROMETHEE

Un conseil : il ne faut jamais appeler la méthode run() mais la méthode start, sinon le thread s'execute dans le thread courant (donc ton programme), et bloque l'application jusqu'a ce qu'il meurt. Apparement, ton code a l'air de marcher, peux tu poster la partie server qui répond aux messages et renvoies les données?
0
balbinus Messages postés 19 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 2 juillet 2004
11 mars 2004 à 18:41
Bon, je vais déjà tester avec start()... Ca pose problème que ma méthode s'appelle run ? Enfin, je verrai bien !

La partie serveur n'est malheureusement pas de moi... C'est un logiciel qui s'appelle FRUK, si ça t'intéresse. Voilà voilà...

Merci de tes réponses !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
balbinus Messages postés 19 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 2 juillet 2004
11 mars 2004 à 20:04
Avec start(), ça me plante pas l'appli, c'est déjà ça... Mais le problème, c'est que ça ne marche toujours pas !

Mais merci quand même pour le conseil !
0
balbinus Messages postés 19 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 2 juillet 2004
11 mars 2004 à 21:43
Une erreur VRAIMENT bête... Lorsque j'envoie la commande, je fais \n, au lieu de \r\n... Une fois corrigé, ça va beaucoup mieux !!!

Merci de ton aide !
0
Rejoignez-nous