ServerSocket ---Bitmap---> ClientSocket

to_bad

Grünschnabel
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...
 

Neue Beiträge

Zurück