loufoque, il y a des gens qui apprennent et ils n'ont pas ton niveau. un peu de diplomatie..... ou au moins de modestie
Version imprimable
loufoque, il y a des gens qui apprennent et ils n'ont pas ton niveau. un peu de diplomatie..... ou au moins de modestie
J'ai comme contrainte, de ne pas utiliser d'autre librairies. Je suis limité a recv() et read(), la classe sockbuf aurait pu me servir mais je peux pas l'utiliser donc, effectivement, je sais pas trop comment m'y prendre pour lire les données comme tu me le proposes...
La solution la plus simple à coder est de lire caractère par caractère jusqu'à ce que tu rencontres <LF> ('\n').
Probleme résolu :)
Merci a vous et à mon prof ;)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 bool trouve=false; char buffer[100]; int lecture; std::string requete; int lu=0; while(!trouve){ Fonction::viderBuffer(buffer); lecture = read(_fdClient,buffer,sizeof(buffer)); requete.insert(lu,buffer); lu += lecture; string::size_type pos = requete.find("\r\n\r\n"); if (pos != string::npos){ trouve = true; } } cout<<requete<<endl; cout <<"Fin de la requete"<<endl;
c'est un detail, mais si il y a <cr><lf><cr><lf> c'est a la fin de la string, et tu gagnerais un peu en performance en utilisant rfind au lieu de find (qui renvoie la derniere occurrence de la chaine)
c'est juste un detail ^^
C'est toujours bon à savoir.
Merci
Il te faut aussi lire les données en entrée...
Ce qui peut poser problème avec ta technique parce que tu peux déjà avoir lu tout ou partie de la donnée.