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.
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)].
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 }
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 !
Partager