Einzelnen Beitrag anzeigen

HenryX14

Registriert seit: 12. Mär 2003
19 Beiträge
 
#2

Re: Stream versenden mit Indy 10

  Alt 10. Feb 2005, 19:59
Hallo Leute,

Indy 10 scheint wahrscheinlich noch nicht so sehr vertreten zu sein..
Also ich habe mittlerweile einen Filetransfer zustande bekommen. (unten seht ihr den Code)
Das funktioniert, so wie er da steht. Ich bin damit aber irgendwie nicht ganz zufrieden, denn:
- Ich würde die Datei gerne Paketchenweise übermitteln, um z.b eine Resumefunktion einzubauen, Fortschrittsanzeige zu realisieren oder Multiple Quellen zur Datenübermittlung einzusetzen (wie bei Emule oder ähnlichem)
- Transfergeschwindigkeiten zu drosseln.

Habt ihr diesbezüglich Ideen? Ich persönlich habe generell noch Verständnisprobleme bezüglich diesem TIdStreamVCL.

Wäre für Vorschläge sehr dankbar!!

Henry



Client:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  datei: TFileStream;
  stream: TIdStreamVCL;
begin
if (opendialog1.Execute) then Datei := TFileStream.Create(opendialog1.FileName, fmOpenRead);
  stream := TIdStreamVCL.Create(datei);
  client.Connect;
  client.socket.WriteLn(IntToStr(stream.Size));
  client.Socket.WriteBufferOpen;
  client.Socket.Write(stream);
  client.Socket.WriteBufferFlush;
  client.Socket.WriteBufferClose;
  
end;
Server:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  datei: TFileStream;
  stream: TIdStreamVCL;
  groesse: Int64;
begin
  datei := TFileStream.Create('test.txt',fmCreate);
  stream := TIdStreamVCL.Create(datei,true);
  groesse := StrToInt(AContext.Connection.Socket.ReadLn());
  AContext.Connection.Socket.ReadStream(stream, groesse);
  datei.Free;
  stream.Free;
end;
  Mit Zitat antworten Zitat