AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Stream von Client nach Server schicken
Thema durchsuchen
Ansicht
Themen-Optionen

Stream von Client nach Server schicken

Offene Frage von "Synollus"
Ein Thema von Synollus · begonnen am 29. Dez 2008 · letzter Beitrag vom 31. Dez 2008
 
Synollus

Registriert seit: 29. Dez 2008
49 Beiträge
 
#1

Stream von Client nach Server schicken

  Alt 29. Dez 2008, 14:01
Ich habe bei euch schon oft die Suche benutzt , aber jetzt bin ich an einem Punkt angekommen, an dem ich eure Hilfe mal brauche.

Ich habe den ImageServer (über TCP) aus den Indy 9 Demos ein wenig gekürzt, damit ich den Part in mein Programm bauen kann.

Der Server:

Delphi-Quellcode:
procedure TfrmServer.ServerExecute(AThread: TIdPeerThread);
var
  Path: String;
  fStream: TFileStream;
  tBM: tBitmap;
begin
  Try
    If Copy(UpperCase(AThread.Connection.ReadLn), 1, 3) = 'SRNthen
      begin
        Path := ExtractFileDir(ParamStr(0)) + '\images\ScreenShot.BMP';
        tBM := TBitmap.Create;
        ScreenShot(0, 0, Screen.Width, Screen.Height, tBM);
        If FileExists(Path) then DeleteFile(Path);
        tBM.SaveToFile(Path);
        tBm.FreeImage;
        FreeAndNil(tBM);
        fStream := TFileStream.Create(Path, fmOpenRead + fmShareDenyNone);
        AThread.Connection.OpenWriteBuffer;
        AThread.Connection.WriteStream(fStream);
        AThread.Connection.CloseWriteBuffer;
        FreeAndNil(fStream);
        AThread.Connection.Disconnect;
      end;
  Except
    on E : Exception do
      ShowMessage(E.Message);
  end;
end;
Der Client:

Delphi-Quellcode:
procedure TfrmClient.btnServerScreenShotClick(Sender: TObject);
var
  ftmpStream: TFileStream;
  Path: String;
begin
  Try
    With Client do
      begin
        WriteLn('SRN');
        Path := ExtractFileDir(ParamStr(0)) + '\ServerScreen.bmp';
        If FileExists(Path) then DeleteFile(Path);
        ftmpStream := TFileStream.Create(Path, fmCreate);
        While connected do
          ReadStream(fTmpStream, -1, True);
        FreeAndNil(fTmpStream);
        Disconnect;
        imgMain.Picture.LoadFromFile(Path);
      end;
  Except
  end;
end;
Nun ist mir eine kleine Sache aufgefallen. In dem Beispiel schickt der Server einen Screenshot an den Clienten. Ich brauche es aber genau andersherum. Daher meine Frage: Kann ich das einfach umkehren ohne dass ich jedem Programm noch das Gegenstück reinpacken muss, sodass jede EXE Server und Client hat?

Da ich es nicht so mit Streams habe, hoffe ich, dass ihr mir helfen könnt.

[APPEND1]: Achja, zur Info: Ich verwende Indy 9.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz