Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Mit BlockRead() Datei kopieren

  Alt 13. Sep 2007, 14:12
Hallo,

du lässt BlockRead() immer 1024 Byte lesen, aber beim letzten Lesevorgang ist die Chance groß, dass weniger als 1024 Byte gelesen werden können. Du kannst die Zahl der wirklich gelesenen Bytes in einer Variablen erhalten, die du als vierten Parameter von BlockRead() übergibst. Diese Variable kannst du dann zum Steuern von SendBuf() verwenden, damit nicht mehr als die gelesenen Bytes versendet werden.

Delphi-Quellcode:
// look ma, no hands!

procedure FileSend(const fn: TFilename; socket: TBaseSocket);
var
  s: TStream;
begin
  s := TFileStream.Create(fn, fmOpenRead);
  try
    socket.SendStream(s);
  finally
    s.Free;
  end;
end;
Wieder getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat