Naja, du bastelst dir wie gesagt erstmal so eine schnittstelle, die die Datenübertragung per
INDY verwaltet. Das sind aber nicht mal eben so 5 zeilen. Grundsätzlich kannst du so Dateien verschicken:
http://www.delphipraxis.net/internal...ct.php?t=61806
In diesem Beispiel wird vor dem senden eine Datei in einen Filestream geladen:
FStream := TFileStream.Create(DateiOpenDialog.FileName, fmOpenRead);
Ich habe damit angefangen, hier keinen Filestream sondern nur allgemein einen Stream zu versenden.
Dabei hab ich mir ein
Package definiert:
Delphi-Quellcode:
TMyPackage:=
Record of
SendStream:TStream;
IP:
String;
end;
Diese Packages werden zunächst in einer Liste gespeichert, der Warteschlange.
Die Indyserver/clients sind bei mir gethreaded, also laufen in einem separaten Thread um unabhängig vom restlichen Programm zu sein. Bei dem Executeereigniss des Threads wird die Warteschlange abgearbeitet:
Delphi-Quellcode:
procedure MySendingThread.Execute
begin
MyPackage:=GetNextPackageFromQueue;
TCPSender.Host:=MyPackage.IP;
try
IDS := TidStreamVCL.Create(MyPackage.Sendstream);
try
{ Senden }
with TCPSender do
begin
Connect;
try
Socket.Write(IDS, 0, true);
finally
Disconnect;
end;
end;
finally
FreeAndNil(IDS);
end;
finally
FreeAndNil(FStream);
end;
end;
end;
Der Code wird so noch nicht funktionieren, weil er jetzt nur ausm Kopf geschrieben und nicht getestet ist. Er soll ja auch nur die Idee dahinter aufzeigen. Vielleicht gibts bessere Lösungen, aber ich bin bis jetzt ganz gut damit gefahren.
Danke auch nochmal an DataCool, der mir damals da etwas unter die Arme gegriffen hat!!!
Grüße