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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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