Code :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* ========================================================================== */
/*                                                                            */
/*   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...