Autor Beitrag
DBZfan
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Sa 31.05.03 09:50 
Hallo,
ich benutze den TCP Server / Client von Indy, um eine Datei zu senden. Die Datei wird vom Server zum Client per Stream übermittelt. Das Problem ist das der Client "einfriert" in der Zeit, wo die Datei übermittelt wird. Dieses darf aber nicht sein, weil das Prog später sehr viele Dateien übermitteln soll. Was kann man da machen, oder was mach ich falsch?

Quellcode vom Client:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);
var
  FStream: TFileStream;
begin
  FStream := TFileStream.Create('C:\test.zip', fmCreate);
  with Form1 do begin
    IdTCPClient1.Connect; // Verbindung aufbauen
    try
      IdTCPClient1.ReadStream(FStream, -1, True); // Stream empfangen
      FStream.Seek(0, soFromBeginning);
    finally
      IdTCPClient1.Disconnect; // Verbindung schließen
      FStream.Free; // Stream freigeben
    end;
  end;
end;


Quellcode vom Server:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  FStream: TFileStream;
begin
  FStream := TFileStream.Create('C:\test.dat', fmOpenRead);
  try
    AThread.Connection.OpenWriteBuffer;
    AThread.Connection.WriteStream(FStream);
    AThread.Connection.CloseWriteBuffer;
  finally
    AThread.Connection.Disconnect;
    FStream.Free;
  end;
end;
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Sa 31.05.03 10:42 
Ich mach er immer mit Strings (ich weiß, dass das sehr unsauber ist):

Daten in String lesen - String in Stream schreiben, wenn keine Daten -> Application.ProcessMessages;[/delphi]

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.