[ALG2] Protocole C-S, <EndLine> de type String

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [ALG2] Protocole C-S, <EndLine> de type String

Message  jonas le Lun 06 Juin 2011, 21:25

Bonjour,
petite question à la veille de l'exam (qui ne tente rien n'a rien...)

Mon client et mon serveur lisent des commandes et des réponses qui sont terminée par <END_LINE>

END_LINE étant une String.

Dans mon programme je lisais directement sur l'OutputStream (des Bytes). Du coup pour savoir quand m'arrêter ce n'est pas très simple de tester la chaîne de fin de commande.
<COMMANDE>paramètreChaine<END_LINE>

Je pourais faire mes test sur \r puis \n mais du coup... le code n'est plus portable si <END_LINE> change.
Où alors... faut tester la taille de END_LINE et tester les x derniers caractères lus...

Tout ça me semble bien compliqué et je me dis qu'il y a sûrement plus simple... non?

on nous déconseille également de faire des readLine en réseaux, en raison justement du END_LINE qui n'est pas le même sur tout les systèmes...

Enfin donc si une bonne âme à une idée...

EDIT:
peut-être un String.endsWith(...)

Code:
         int lastChar;
         String mot = new String();
         do {
            lastChar = fromServ.read();

            if (lastChar == -1) {
               showInfo("La connexion (fluxIn) avec le serveur " +
                     "a été perdue.");
               //TODO: faire un truc mieux...
               System.err.println("Connexion (fluxIn) perdue...");
            }

            mot += (char) lastChar;

         } while (!mot.endsWith(HangManProtocol.END_LINE));

         mot = mot.substring(0, mot.length() - HangManProtocol.END_LINE.length());

(oui ça arrive en fin de session les gens qui commencent (?) à parler pour eux-même)


Dernière édition par jonas le Lun 06 Juin 2011, 23:38, édité 1 fois

jonas

Nombre de messages : 234
Prénom : Jonathan
Statut : Ancien industrialisé
Localisation : Devant son clavier BÉPO !
Date d'inscription : 29/09/2008

http://www.xax.be

Revenir en haut Aller en bas

resolu Re: [ALG2] Protocole C-S, <EndLine> de type String

Message  pbt le Lun 06 Juin 2011, 22:01

Pourquoi pas un readLine dans BufferedReader par exemple.
(Mais je ne vérifie rien de ce que je dis ... je dis ça en passant).

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

resolu Re: [ALG2] Protocole C-S, <EndLine> de type String

Message  jonas le Lun 06 Juin 2011, 23:40

Et bien je pensais qu'en utilisant le readLine, je ne vérifiait pas que le <END_LINE> du protocole (constante fournie dans un fichier java pour l'exam) était au bout de la commande. Mais que je laissais Java choisir quel caractère ou chaîne de caractère interpréter comme fin de commande.

jonas

Nombre de messages : 234
Prénom : Jonathan
Statut : Ancien industrialisé
Localisation : Devant son clavier BÉPO !
Date d'inscription : 29/09/2008

http://www.xax.be

Revenir en haut Aller en bas

resolu Re: [ALG2] Protocole C-S, <EndLine> de type String

Message  Nicky le Mar 07 Juin 2011, 08:24

au cas ou tu passerais pas ici ce matin.

Perso j'utilise en sortie un printWriter ou un outputstreamwriter ils ont tout 2 la méthodes readline(), normalement a l exam le caractere end line te posera pas de probleme étant donner qu il est définit dans le fichier Protocole qui te sera fournit.

Apres tu divise ta chaine en différente partie avec des substring() etc...

Nicky

Nombre de messages : 300
Age : 29
Prénom : Pierre
Statut : Tout fini ! 2012
Localisation : Bruxelles / Chimay
Date d'inscription : 18/03/2008

Revenir en haut Aller en bas

resolu Re: [ALG2] Protocole C-S, <EndLine> de type String

Message  Contenu sponsorisé Aujourd'hui à 10:49


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum