[Socket] SendBuff avec BMP
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) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 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) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 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;
} |
Merci