Code:
/* ========================================================================== */
/* */
/* screen.cpp */
/* */
/* Der Versuch eine Bitmap über den ServerSocket zu senden */
/* */
/* */
/* Info: */
/* - SerS = ServerSocket */
/* - ScreenBMP = new Graphics::TBitmap; */
/* - int __fastcall TForm1::GetConnections(void) */
/* { */
/* connections=SerS->Socket->ActiveConnections; */
/* return(connections); */
/* } */
/* ========================================================================== */
void __fastcall TForm1::btn_sendimageClick(TObject *Sender)
{
SocketStream = new TWinSocketStream(SerS->Socket,5000); // Socket Stream
Speicherpuffer = new TMemoryStream; // zwischen Stream
TRect R; //Rechteck um Größe des Screenshots festzulegen
R=Rect(0,0,400,300); //
ScreenBMP->Canvas->StretchDraw(R,ScreenBMP); //Screenshot auf Screenshot strechten x=0->400 y=0->300
ScreenBMP->Width= 400; //Nur noch gestrecktes Bild in ScreenBMP anzeigen
ScreenBMP->Height= 300; //
ScreenBMP->SaveToStream(Speicherpuffer); // Screenshot in zwischen Stream speichern
ScreenBMP->SaveToFile("test.bmp"); // Screenshot als File speichern (nur zum Testen)
ShowMessage(Speicherpuffer->Size); // Die Eigenschaft Size gibt
// die Größe des Streams in Byte an.
// Mit Position können Sie die aktuelle Position im Stream ermitteln.
// Dies ist die Byte-Anzahl ab dem Beginn der Stream-Daten.
Speicherpuffer->Position = 0; // Position zurück auf Byte 0
Form4->Image1->Picture->Bitmap->LoadFromStream(Speicherpuffer); // Bild aus Stream laden (nur zum Testen)
if(GetConnections()>0) // Überprüfung ob Verbindung zu einem oder mehreren
{ // Clients steht
streamed = True; // streamed merkt sich ob gestreamt wurde...
for(int i=0;i<connections;i++)
{
if(!SocketStream->WaitForData(5000)) // Wenn Socket frei ist (inerhalb 5 sek.)
{
SocketStream->Write(Speicherpuffer,Speicherpuffer->Size); // Schreibe zwischen Stream auf Socketstream
}
}
}
}
Leider kommt am Client nichts an, der Server bleibt beim Klicken auf btn_sendimage 5 sek. hängen und mehr passiert - im Bezug auf Netzwerkkommunikation - nicht...