Socket et Java

Socket et Java - Java - Programmation

Marsh Posté le 30-06-2004 à 00:29:24    

Salut à tous
j'ai un petit problème lorsque je tente de tester un serveur socket que j'ai moi même créé.
 
Le serveur socket attend les connections des clients, puis lis ce que les clients tentent de lui envoyer.
La lecture se fait via la commande :
 
String msg = entree.readLine();
 
entrée est de type BufferedReader et est affecté par :
entree =new BufferedReader(new InputStreamReader(socket.getInputStream(),Constantes.CHARSET),Constantes.MAX_CARACTERES_MESSAGE);
 
Pour tester mon application, je tente de me connecter à mon serveur socket via Telnet
La connexion ne pose aucun problème mais quand j'écris un message dans la console telnet, et que je valide via la touche entrée, le message n'est pas transmis à mon serveur.
 
Je pense qu'il y a quelque a écrire sous telnet pour que l'envoi soit réalisé. J'ai essayé \n et \r mais ca ne marche pas.
 
Quelqu'un a t'il la solution pour moi ?
 
Merci Merci !


Message édité par Ben22520 le 30-06-2004 à 00:33:04
Reply

Marsh Posté le 30-06-2004 à 00:29:24   

Reply

Marsh Posté le 30-06-2004 à 00:40:40    

je pense qu'en telnet tout est balancé au fur et à mesure ... en tout cas, c'est sûr qu'un retour chariot balance tout ...
 
mais là t'as pas montré comment tu lis (sur le serveur) ce qui est envoyé par le client ...

Reply

Marsh Posté le 30-06-2004 à 00:46:04    

Voici un peu plus de code sur la classe

Code :
  1. public class Client implements Runnable {
  2. private Socket socket = null;
  3. private BufferedReader entree = null;
  4. private BufferedWriter sortie = null;
  5. private boolean eteindre = false;
  6. private Identification ident = null;
  7. private Salon salon = null;
  8. private static int nbClients = 0;
  9. public Client(Socket socketA) {
  10.  this.socket = socketA;
  11.  try {
  12.   entree =
  13.    new BufferedReader(
  14.     new InputStreamReader(
  15.      socket.getInputStream(),
  16.      Constantes.CHARSET),
  17.     Constantes.MAX_CARACTERES_MESSAGE);
  18.   sortie =
  19.    new BufferedWriter(
  20.     new OutputStreamWriter(
  21.      socket.getOutputStream(),
  22.      Constantes.CHARSET),
  23.     Constantes.MAX_CARACTERES_MESSAGE);
  24.  } catch (IOException ioe) {
  25.   System.out.println("IOException : " + ioe.getMessage());
  26.   Serveur.supprimerUtilisateurEnAttente(this);
  27.  }
  28.  nbClients++;
  29. }
  30. public void run() {
  31.  while (!eteindre) {
  32.   try {
  33.    String msg = entree.readLine();
  34.    if (msg != null && msg.length() > 0) {
  35.     msg = msg.substring(0, Constantes.MAX_CARACTERES_MESSAGE);
  36.     System.out.println("Reception de "+toString()+" : "+msg);
  37.     Interpreteur.executer(this, new MessageClientServeur(msg));
  38.    } else {
  39.     System.out.println("Fermeture du client : " + toString());
  40.     Serveur.supprimerClient(this);
  41.    }
  42.   } catch (SocketException e) {
  43.    System.out.println("SocketException : " + e.getMessage());
  44.    Serveur.supprimerClient(this);
  45.   } catch (Throwable e) {
  46.    System.out.println("Exception inconnue :" );
  47.    System.out.println(e.toString());
  48.    Serveur.supprimerClient(this);
  49.   }
  50.  }
  51. }


 
C'est bien la ligne "String msg = entree.readLine();" qui lit ce qui est envoyé par le client

Reply

Marsh Posté le 30-06-2004 à 00:52:03    

ouais, bizarre ... ca devrait marcher je pense ...
 
(je vois vraiment pas à quoi sert ton MAX_CARACTERES_MESSAGES, mais bon ...)
 
essaye de lire caractères par caractères pout voir si c'est pas un problème de retour à la ligne ...

Reply

Marsh Posté le 30-06-2004 à 00:53:45    

Oui, merci Benou je vais tenter de faire comme tu dis

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed