Einzelnen Beitrag anzeigen

master_mu

Registriert seit: 6. Mai 2003
7 Beiträge
 
#1

TIdTcpClient von Indy 9: onWork-Ereignisse ???

  Alt 9. Jul 2003, 21:40
Hallo,
ich habe ein Programm geschrieben, dass Dateien übers Netz versendet und empfängt. Dazu verwende ich TIdTcpServer und TIdTcpClient von den Indy 9 Komponenten. Das Programm fungiert sowohl als Client als auch als Server. Ich möchte jetzt zusätzlich eine Status-Anzeige in das Programm einbauen, um den Downloadfortschritt anzuzeigen. Dazu benutz ich das onWorkBegin und onWork - Ereignis der Client-Komponente. Leider wird die aus irgendwelchen Gründen nicht ausgeführt. Vielleicht könnt ihr mir helfen. Beim anfordern einer Datei mache ich folgendes im onCommand-Event des Server-Command-Handlers:
Delphi-Quellcode:
procedure TForm1.onCommand(ASender: TIdCommand);
var
 fileid : TFileStream;
begin
 fileid := TFileStream.create(asender.params.strings[0], fmOpenRead);
 with asender.thread.connection do
  begin
   openwritebuffer;
   writestream(fileid);
   closewritebuffer;
   disconnect;
  end;
 freeandnil(fileid);
end;
Im onConnect-Event des Clients mache ich folgendes:
Delphi-Quellcode:
procedure TForm1.onConnect(Sender : TObject);
var
 fileid : TFileStream;
begin
 fileid := TFileStream.create('C:\irgendwas.dat', fmCreate);
 with TIdTcpClient(Sender) do
  begin
   sendCmd('getFile|d:\irgendwo.dat')
   while connected do
    readstream(fileid, -1, true);
  end;
 freeandnil(fileid);
end;
Die Übertragung funzt wunderbar und die Datei kommt komplett an. Nur leider wird onWork und onWorkBegin nicht ausgelöst. Woran könnte das liegen? Könnte es deswegen sein, weil ich bisher nur über das loopback-device localhost getestet habe und somit gar keine richtige TCP-Verbindung aufgebaut wird? Kann das im Moment leider nicht in einem richtigen Netz testen, wäre für antworten aber dankbar. Denn ich kann mir nicht vorstellen, dass es wirklich an localhost liegt, oder weil server und client in einem programm laufen.

Dank schon mal im Voraus
MU
  Mit Zitat antworten Zitat