[Socket] SendBuff une BMP

afrodje Messages postés 759 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 22 janvier 2014 - 20 mars 2008 à 14:40
afrodje Messages postés 759 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 22 janvier 2014 - 20 mars 2008 à 16:22
Salut.


Je voudrais transmettre un fichier image (bmp) avec les composants Tsocketserveur et TSocketclient.

Mon problème vient d'une vulgaire fenêtre windows qui s'ouvre à l'execution de Button2Click

Voici mon code serveur (envoi du fichier) :

void __fastcall TForm1::FormCreate(TObject *Sender)
{
ServerSocket->Port = 10000;
ServerSocket->Open();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::charge_image(TObject *Sender)
{
 
AnsiString chemin_absolu;
OpenPictureDialog1->Execute();
//Form1->TImage1->Picture->LoadFromFile("mon_image.jpg");
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
 
 
}
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 
//envoi de l'image en créant un buffer (zone memoire)
TMemoryStream *stream = new TMemoryStream();
Image1->Picture->Bitmap->SaveToStream(stream);
ServerSocket->Socket->SendBuf(stream->Memory, stream->Size);
delete stream;
 
}

Et voici la reception du client (une partie du code) :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]-->void __fastcall TForm1::ClientSocketRead(TObject *Sender,
TCustomWinSocket *Socket)
{
 
//recoi l'image
TMemoryStream *stream = new TMemoryStream();
char Buffer[500000];
int Count;
while(Count = ClientSocket->Socket->ReceiveBuf(Buffer, sizeof(Buffer)) != -1)
{
// stream->Write(Buffer, sizeof(Buffer));
stream->Write(Buffer, Count);
Sleep(1000);
}
stream->Position = 0;
Image1->Picture->Bitmap->LoadFromStream(stream);
delete stream;
}

<!-- END TEMPLATE: bbcode_code -->Merci

2 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 mars 2008 à 16:15
Salut,
Question bêtes mais vu ton screenshot, est-ce que tu as bien penser a connecter tes deux sockets avant de faire le send ?

Shell
0
afrodje Messages postés 759 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 22 janvier 2014
20 mars 2008 à 16:22
oui parce que si je modifie le code et j'effectue un envoi avec du texte (avec SendText), cela fonctionne.
0
Rejoignez-nous