Probleme de read() bloquant sur un socket.
Bonjour,
Je suis en train de créer un petit serveur HTTP et j'ai un probleme lors de la lecture des requetes des clients...
J'ouvre bien un thread a la connexion d'un client, dans ce thread, je dois lire la requete effectué par le navigateur.
Je fais donc un :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| char buffer[100];
int lecture;
do{
lecture = read( _fdClient, buffer, sizeof(buffer));
if ((int)sizeof(buffer)>lecture){
buffer[lecture] = 0;
}
cout << buffer << endl;
}
while(lecture>0);
cout <<"Fin de la requete"<<endl; |
"Le fin de requete" ne s'affiche jamais !!! Pourtant quand le serveur a tout lu, le read devrait me renvoyer 0 et ce n'est pas le cas. Une idée ?
Merci de votre aide.
PS : Apres un peu plus de recherche, il semblerait que le read soit bloquant, ne souhaitant pas rendre mon socket non bloquant que faire pour contourner ce soucis ?
Je pourrais tres bien mettre un char buffer[4096] pour tout lire d'un coup et encore, si la requete est plus grande, je peux pas le gérer....
Une solution pour gérer tous les cas ? MERCI à vous.