[java] programme client/serveur

programme client/serveur [java] - Java - Programmation

Marsh Posté le 18-01-2005 à 23:22:21    

Salut tout le monde
Voilà je suis en train de coder une petite appli serveur/client utilisant les sockets, et pour l'instant j'arrive à envoyer les données par le socket, les afficher etc.
Je vous explique comment ça fonctionne pour que vous puissiez comprendre:  
 - je lance le serveur
- je lance le client
- je tape du texte après avoir lancé le client
- le serveur reçoit les données
- le serveur affiche les données sur le shell du serveur, comme ça: Input = data
- le serveur renvoie un echo au client: Echo = data
 
Et là, le client tombe une boucle, renvoie constamment le premier texte tapé. Si je coupe le serveur en premier, le client continue dans sa boucle.
 
Ce que je souhaite:
- je tape du texte après avoir lancé le client
- le serveur reçoit les données
- le serveur affiche une fois les données avec Input = data
- le serveur renvoit une fois un echo avec Echo = data
- le client affiche l'echo, et réaffiche le prompt, de sorte que je puisse à nouveau taper du texte, et le renvoyer au serveur.  
 
Ce que j'aimerais faire, c'est une sorte de messagerie instantanée, je lance le serveur, puis je lance le client, et en le lancant, je tape un message quelconque, le serveur l'affiche, mais le client doit rester lancé, et si je retape un message ça me l'affiche à nouveau.
En gros c'est le principe d'une messagerie, mais dans un seul sens, on remplace l'autre utilisateur par le serveur.
 
Premier problème, c'est que le texte tapé dans le System.in ça devient des chiffres quand c'est envoyé au serveur. Au lieu de m'afficher "test" il m'affiche "116".
 
Après le deuzième problème c'est comment faire pour que le client reste lancé ? J'ai pensé à une boucle, d'ailleurs le code joint c'est ma dernière tentative avec une boucle, mais le problème, une fois un texte tapé dans le System.in, le serveur l'affiche puis tombe dans une boucle infini qui m'affiche constamment ce que le client a envoyé.  
 
Voilà les fichiers si vous voulez voir:
http://zecmerquise.free.fr/files/socket.tar.gz


Message édité par ZecMerquise le 18-01-2005 à 23:23:44

---------------
A plane is like a computer; the best way for it to crash is to open windows
Reply

Marsh Posté le 18-01-2005 à 23:22:21   

Reply

Marsh Posté le 19-01-2005 à 10:16:08    

1° : dans ta boucle cote client tu fais ca :
output.println(in);
System.out.println(input.readLine());
en gros tu redemandes jamais un autre input
2°: tu devrais faire un :
new BufferedReader(new InputStreamReader(System.in)); parce que tu lis un char au tout debut et c'est tout
 
3° : mets tes classes dans des packages !


Message édité par beemer le 19-01-2005 à 10:17:01
Reply

Sujets relatifs:

Leave a Replay

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