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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.