Graphics::TBitmap() per TCP senden?
-
hallo
ich habe ein Graphics::TBitmap() objekt und möchte den ihalt nun per TCP von einem server zu einem client senden damit der client es in einem TImage darstellen kann. wie geht sowas?
-
Mit den Komponenten vom C++Builder oder von INDY einfach den Speicherbereich senden.
-
ich kriege irgendwie beim server eine zugriffsverletzung sobald ein client connected. anbei etwas code:
server
Das ganze ist in einem timer. stream ist vom type TMemoryStream..
... ... ... bmp->SaveToStream(stream); for(int i = 0; i < ServerSocket1->Socket->ActiveConnections; i++) { if(stream != NULL) { ServerSocket1->Socket->Connections[i]->SendStream(stream); } }client
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; TMemoryStream *stream; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { Socket->ReceiveBuf(stream, stream->Size); Image1->Picture->Bitmap->LoadFromStream(stream); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { stream = new TMemoryStream(); ClientSocket1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { delete stream; } //---------------------------------------------------------------------------ne idee was ich falsch mache? zugriffsverletzung lesen/schreiben von 0000000. das klingt irgendwie wie ein ungerichteter zeiger

-
Keine Ahnung, ob das was mit der Meldung zu tun hat, aber achte mal drauf, Stream->Position (wieder) auf 0 zu setzen bzw. das zu kontrollieren, bevor du ihn abschickst.