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) :
Merci
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; }
Partager