[JAVA] Flots dans un serveur ...

Canaboss Messages postés 51 Statut Membre -  
JulienZ Messages postés 44 Statut Membre -
Bonjour,

je vais tenter d'exposer mon problème de la manière la plus concise ...

Pour un projet, je dois programmer un serveur qui donnera l'heure en fonction de la ville qu'on lui entre. J'ai choisis le Java car je connais un peu ce langage et que cela me parait bénéfique pour la suite du projet (multithreads). J'ai programmé la première étape du serveur à savoir : connexion, entrer un message et le serveur le réimprime (sorte d'écho) ... Le problème est que, lorsque j'écris une première entrée, le renvoi du serveur est surchargée de je ne sais trop quoi ... Par exemple si je tape, sous PUTTY : "salut <ENTER> salut <ENTER> salut" voici le rendu :

"ÿûÿû ÿûÿû'ÿýÿûÿýsalut
salut
salut"

Savez vous ce qui ne va pas ? Je vous remercie d'avance pour conseils et ou avis sur le code ...

PS : vous pouvez voir le code ci dessous, je code sous ECLIPSE :

import java.net.*;
import java.lang.*;
import java.io.*;

public class server {

/**
* @param args
* @throws IOException
* @throws UnknownHostException
* @throws SocketException
*/

static final int My_port = 4170;

public static void main(String[] args) throws IOException{

ServerSocket monserveur = new ServerSocket(My_port);
boolean end_reading = false;

//monserveur.setSoTimeout(10000);

System.out.println("listening");
Socket client = monserveur.accept();
System.out.println("accepted");

BufferedReader lecture = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedWriter ecriture = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
String ligne="";

ecriture.write("si vous voulez eteindre le serveur, tapez off");
ecriture.flush();

try {

while ((ligne = lecture.readLine()) != null) {
System.out.println(ligne);
}

}

finally {

lecture.close();
ecriture.close();
client.close();
monserveur.close();

}
}
}
A voir également:

1 réponse

JulienZ Messages postés 44 Statut Membre 4
 
Utilise l'analyseur réseau WireShark en effectuant ton test. Tu pourra ainsi analyser complètement le flux échangé etu aura par la même occasion le code ascii de ces caractère impossible à afficher (peut être s'agit il de retour à la ligne ou de retour chariot, de tabulation, ...).

Il vaut mieux utiliser PrintWriter que BufferedWriter et ainsi écrire des String délimité par des retours à la ligne plutôt que des String sans délimitation. Peut-être est ce mal géré du coté du client. Pourrais tu nous donner le code de ton client ?

PrintWriter ecriture  = ....
ecriture.println("si vous voulez eteindre le serveur, tapez off");
-1