AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien über TCP

Ein Thema von Meflin · begonnen am 13. Sep 2003 · letzter Beitrag vom 1. Mär 2004
 
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#6

Re: Dateien über TCP

  Alt 17. Sep 2003, 16:24
Danke, Stevie, du hast mich auf die Idee gebracht. Mir ist gerade wieder ein Parameter von WriteStream eingefallen der das, was du gemacht hast, von selbst erledigt. Und zwar AWriteByteCount. Wenn dieser true ist, wird die Größe des Streams nämlich automatisch mit WriteInteger (mal nebenbei, WriteInteger hättest du auch verwenden können ) verschickt. Nun muss man nur noch vor der ReadStream Methode die Größe mit ReadInteger abfangen und ReadStream als Parameter übergeben. Bingo.

Die Größe von SendBufferSize zu verändern nützt reichlich wenig, zumahl die Maximalgröße bei 32768 Bytes liegt. Diese Eigenschaft gibt nur an, wieviel Bytes (maximal) immer auf einmal gesendet werden.
Also, der Finale Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
begin
  if not OpenDialog1.Execute then exit;
  with IdTCPClient1 do
  begin
    fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
    Connect;
    try
      OpenWriteBuffer;
      try
        WriteStream(fs, true, true, 0); //das 2. true ist das entscheidende
        CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      Disconnect;
      fs.Free;
    end;
  end;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  fs: TFileStream;
  SizeOfIncomingStream: integer;
begin
  if not SaveDialog1.Execute then exit;
  fs := TFileStream.Create(SaveDialog1.Filename, fmCreate or fmShareExclusive);
  with AThread.Connection do
    try
      SizeOfIncomingStream := ReadInteger;
      ReadStream(fs, SizeOfIncomingStream);
    finally
      Disconnect;
      fs.Free;
    end;
end;
Also nochmal vielen Dank Stevie!
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  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 06:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz