Bonjour,

je suis sur un projet informatique et j'essaie de récupérer une image sur un serveur (en http). Je développe sur l'ide c++ builder 6..
j'utilise un socket afin de récupérer l'image en mémoire dans un flux, mais j'ai un problème:
Lorsque j'utilise la fonction ReceiveLenght je n'arrive pas à recevoir la bonne taille de trame. Le serveur m'envoie une trame PLUS longue que ce que me retourne ReceiveLength.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
void __fastcall TForm1::SocRead(TObject *Sender, TCustomWinSocket *Socket)
{  
        int nReceived = Socket->ReceiveLength(); // nombre d'octets reçus
        char buffer[102000]; // buffer de récupération des paquets venant du serveur
 
        Socket->ReceiveBuf(buffer, nReceived);  // lis que les 200 premier caractères la plupart du temps
        pStream->Write(buffer, nReceived );       // transférer dans le stream
                                              // pour traitement ultérieur
}
L'avantage c'est que je reçois bien des données, et j'ai vérifier avec le débogueur je reçois les bonnes données [trame réponse + données (image)].
Néanmoins, je ne reçois quasiment jamais la trame complète à cause de ce problème. Est-ce que vous savez comment résoudre ce problème? avez vous une autre méthode de réception d'une image à me proposer?

Je suis preneur sur toutes les solutions que vous pourriez me proposer.
J'attends avec impatience vos réponses, merci !