Récupérer une image avec un socket?
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:
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? :cry:
Je suis preneur sur toutes les solutions que vous pourriez me proposer.
J'attends avec impatience vos réponses, merci ! :)