Einzelnen Beitrag anzeigen

Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#8

Re: Dateien senden und empfangen

  Alt 18. Nov 2007, 19:16
Also, mein Problem ist:
Ich will ein Bitmap über ServerSocket->ClientSocket versenden. So ein bissel Quelltext hab ich schon:

Server
Delphi-Quellcode:
    Bild := TBitmap.Create; // Das Bitmap zum Versenden
    MS := TMemoryStream.Create; // Der dazugehörige Stream
    MakeScreenShot(Bild);
    Bild.SaveToFile('C:\temp.bmp');
    Bild.SaveToStream(MS);
    MS.Write('ENDE', 4);
    MS.Position := 0;

    ServerSocket1.Socket.Connections[0].SendStream(MS);
Das hier gespeicherte Bild ist nicht beschädigt und lässt sich öffnen

Client
Delphi-Quellcode:
var
  Form1: TForm1;
  MS: TMemoryStream;

procedure TForm1.Button6Click(Sender: TObject);
begin
if ClientSocket1.Active then
  ClientSocket1.Socket.SendText('SCREENSHOT'); // Anfrage senden

  MS := TMemoryStream.Create;
  MS.Position := 0;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject); // Rückgabe (wird rund 670 mal aufgerufen)
  Socket: TCustomWinSocket);
var text, reststr: string;
begin
  text := Socket.ReceiveText;
  begin
    Label8.Caption := IntToStr(StrToInt(Label8.Caption)+1);
    
    if Pos('ENDE', text) = 0 then
      MS.Write(text, Length(text))
    else
    begin
      MS.Write(text, Length(text) - 4);
      MS.Position := 0;
      MS.SaveToFile('C:\temp_client.bmp');
      MS.Position := 0;
      Image1.Picture.Bitmap.LoadFromStream(MS);
      MS.Free;
     end;
  end;
Das hier resultierende Bitmap ist beschädigt und fehlerhaft.
Im Hex-Editor enthält dieses Bitmap folgende Zeichenkette, die rein gar nichts mit dem Ursprung zu tun hat (der Bitmap-Header fehlt auch):
Microsoft Windows GdiPlus ProcessorArchitecture="x86"

Keine Ahnung, wo das herkommt

rollstuhlfahrer
Bernhard
  Mit Zitat antworten Zitat