StreamReader : lancer le ReadLine() jusqu'a ce qu'il n'y en ai plus ?

Résolu
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007 - 22 mars 2005 à 11:26
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005 - 22 mars 2005 à 13:20
Voila, je fais un vieux truc en TCP avec TCPClient et StreamReader/StreamWriter.
Je voudrais une boucle simple qui lit jusqu'a ce qu'il n'y ai plus rien à lire, genre par exemple apres 3 secondes sans nouvelles du truc.
Comment puis-je m'y prendre ?

Merci d'avance.
A voir également:

10 réponses

Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 mars 2005 à 13:16
oups sans le point

if(strin[strin.Length - 1] == '>')

hum.......
3
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 mars 2005 à 11:41
Bonjour,


ReadToEnd();

pas besoin de boucle

hum.......
0
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007
22 mars 2005 à 11:48
Je fais ceci :


string strin;


strin = clientStreamReader.ReadLine();


Console.WriteLine(strin);



string strout = "<HELLO 1 "" password=Llama>\n<TALK "yax" 1 "yax1" "md5" "">";


clientStreamWriter.WriteLine(strout);


Console.WriteLine(strout);


clientStreamWriter.Flush();


strin = clientStreamReader.ReadToEnd();


Console.WriteLine(strin);

Et ca bloque au niveau du ReadToEnd justement, il print queudall, alors qu'en enchainant les ReadLine/Console.WriteLine il print correctement.

Pourquoi ceci ?
0
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007
22 mars 2005 à 11:52
Ok :

in which the server sends data only when you ask for it and does not close the connection, ReadToEnd might block indefinitely and should be avoided.

Donc j'ai quoi comme autre solution ? :)
0

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

Posez votre question
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 mars 2005 à 11:58
Moi j'ai un truc du genre


sTxt = FluxReadImporter.ReadLine();
while ( FluxReadImporter.BaseStream.Position < FluxReadImporter.BaseStream.Length)
{
sTxt = FluxReadImporter.ReadToEnd();
}
Mais ca me fait douter de l'utilité de ma boucle ...

hum.......
0
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007
22 mars 2005 à 12:40
La fin des données envoyées par ce maudit protocole YAX est du type
"blabla
>"

J'ai tenté :


while ((strin=clientStreamReader.ReadLine()) != ">")


{


Console.WriteLine(strin);


}

Mais ça bloque encore :/
0
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007
22 mars 2005 à 12:49
while (
true)


{


strin=clientStreamReader.ReadLine();


Console.WriteLine(strin);



if(strin.Equals(">"))



break;


}

Toujours aucun resultat. Joie.
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 mars 2005 à 13:06
essaye un truc du genre

if(strin[strin.Length - 1] == .'>')

break;

hum.......
0
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007
22 mars 2005 à 13:18
Ca fonctionne. Merci bien !
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 mars 2005 à 13:20
Juste une derniere chose accepte les reponses :)

hum.......
0
Rejoignez-nous