Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy : Datei von Server an Client senden (https://www.delphipraxis.net/76593-indy-datei-von-server-client-senden.html)

benst 6. Sep 2006 19:30


Indy : Datei von Server an Client senden
 
Moin,

ich möchte mit den Indy-Komponenten eine Datei vom Server an Client schicken. Konnte jedoch nur Infos zum Senden von Dateien vom Client zum Server finden. So z.B. bei den Indy-Beispeielen oder unter
http://www.delphipraxis.net/internal...ct.php?p=72333.
Wie stelle ich den Client auf "Empfangen"?
Oder kennt jemand einen anderen Beitrag, der mir weiterhelfen könnte.
Danke.
Gruß
Ben
P.S.: Delphi 5 Standard + Indy 9

inherited 7. Sep 2006 16:26

Re: Indy : Datei von Server an Client senden
 
Lustig, genau den Code habe ich erst letztens umgedreht^^
Womit wir auch schon beim Thema sind. EInfach umdrehen. Da der Server allerdings nicht einfach dem CLient was sagen kann, ohne das dieser das erwartet, solltest du den Client, wenn der die Datei möchte, dem Server dieses Mitteilen lassen.
Hoffe die Informationen reichen erstmal, sonst sag bescheid.

benst 7. Sep 2006 19:41

Datei von Server an Client senden - Software???
 
Zitat:

Zitat von inherited
EInfach umdrehen.

Das habe ich mir auch gedacht, aber es nicht richtig hinbekommen...
Bevor ich davon spreche noch etwas allgemeines.

Ich habe folgende Ziel: Ich möchte Dateien von einem Quell-Computer zu einem Ziel-Computer über das Internet direkt verschicken können. Dazu folgende Anmerkungen:
  • Der Ziel Computer sitzt hinter einem Router und soll sich daher als Client beim Server einloggen. (Ich möchte bzw. kann beim Ziel Computer keine Portweiterleitung einrichten.)
  • Der Server soll dem Client Dateien schicken können, ohne dass jemand am Ziel Computer jeden Dateiempfang bestätigen muss.
Quasi: Ich starte den Server, das Gegenüber loggt sich per Client ein und ich kann ihm dann nach meiner Lust und Laune Dateien schicken.

Lösungvorschläge:
  • "normaler" FTP-Server auf Ziel-Computer und FTP-Client auf Quell-Computer: Geht nicht, weil sich der Zeil Computer hinter einem Router befindet.
  • "normaler" FTP-Client auf Ziel-Computer und FTP-Server auf Quell-Computer: Geht nicht, weil jemand am Zeil-Computer agieren muss, dies soll aber vom Server aus geschehen.
  • Dateien über Skype verschicken: Geht nicht, Dateien müssen alle am Ziel-Computer quitiert werden.
  • Dateien per Mail verschicken: Geht nicht, Dateien sind zu groß für das Postfach.
  • ???

Bisher ist mir noch keine Lösung für dieses Problem eingefallen/ ist mir noch keine Software eingefallen, mit der ich dies realisieren kann.
Achso, wäre auch nett, wenn man der Kommunikationsweg verschlüsselt wird.
Vielleicht habt ihr ja einen Lösungsvorschlag bevor ich mir ein Tool bastel, obwohl es eine einfachere Lösung gibt.

Ich werde mal abwarten, ob es Lösungsvorschläge gibt, bevor ich mich weiter mit meinem Problem bei der "Umdrehung" des Delphi Codes auseinandersetze - dann werde ich auch meine Probleme schildern.

@inherited: Könntest du mir bitte trotzdem mal deinen Code schicken?
Danke

Gruß
Ben

hä was 7. Sep 2006 20:46

Re: Indy : Datei von Server an Client senden
 
schon mal was von hamachi gehört?
damit lässt sich eine netzwerkverbindung über
das internet herstellen, über die dann auch dateien
feigegeben werden können.

inherited 8. Sep 2006 20:57

Re: Indy : Datei von Server an Client senden
 
Zitat:

Zitat von hä was
schon mal was von hamachi gehört?

Ist nicht verschlüsselt...
@benst:
Lass den Client einfach alle 10 sekunden oder was immer du da möchtest, den Server fragen ob es was neues gint. Dieser gibt dann jedesmal "nö" zurück, eben bis er etwas senden soll.

gandime 10. Sep 2006 17:39

Re: Indy : Datei von Server an Client senden
 
naja wie schon von inherited gesagt ist das die beste lösung

Zitat:

Zitat von benst
Ich habe folgende Ziel: Ich möchte Dateien von einem Quell-Computer zu einem Ziel-Computer über das Internet direkt verschicken können. Dazu folgende Anmerkungen:
Der Ziel Computer sitzt hinter einem Router und soll sich daher als Client beim Server einloggen.

naja dazu^^ ich weiss schon was es wird :P

aber da ich ja gerne hilfsbereit bin hier der code:
client:
Delphi-Quellcode:
procedure TForm1.ti_dl_upTimer(Sender: TObject);
var
  FStream:tfilestream;
  lline_b:string;
begin
  s_zspeicher:=eigenschaft1;
  IdTCPClient_filemanager.IOHandler.WriteLn('was neues?');
  line_b:=IdTCPClient_filemanager.IOHandler.readln;
  if (line_b='dl_file') then
  begin
    FStream := TFileStream.Create('ieine datei', fmOpenRead);
    IdTCPClient_filemanager.iohandler.Write(Fstream,0,true);
    FreeAndNil(FStream);
  end
  else if (line_b='up_file') then
  begin
    FStream := TFileStream.Create('ieine datei',fmCreate);  
    IdTCPClient_filemanager.IOHandler.ReadStream(fstream);
    freeandnil(fstream);
  end;
end;
server:
Delphi-Quellcode:
procedure TForm1.IdTCPServer_filemanagerExecute(AContext: TIdContext);
var
  was_tun,s_name:string;
begin
  was_tun:=AContext.Connection.IOHandler.ReadLn;
  AContext.Connection.IOHandler.writeln('up/dl file');//was man halt will
  was_tun:='dl_file/up_file';
  if (was_tun='dl_file') then
  begin
    FStream := TFileStream.Create('ieine datei', fmCreate);
    AContext.connection.IOHandler.ReadStream(fstream);
    FreeAndNil(FStream);
  end
  else if (was_tun='up_file') then
  begin
    FStream:=TFileStream.Create('ieine datei',fmOpenRead);
    AContext.connection.IOHandler.Write(Fstream,0,true);
    freeandnil(fstream);
  end;
end;

inherited 10. Sep 2006 20:35

Re: Indy : Datei von Server an Client senden
 
Das ist aber Indy10, er benutrzt Indy 9...^^
Außerdem sollst du nichts verraten, er soll das ohne Klicki-Copy-Pasti-Bunti schaffen^^

benst 10. Sep 2006 20:53

Re: Indy : Datei von Server an Client senden
 
Danke...
Da es wohl noch etwas dauern wird, bis ich das Projekt wirklich am Laufen haben werde, habe ich erst einmal auf dem Quell-Computer einen SSH-Server (SFTP) installiert und das Gegenüber muss halt erst einmal doch die Aktionen durchführen. (Möchte die Daten ja eigentlich noch verschlüsseln und bis das alles fertig ist, kann das wirklich noch dauern.)

Ich werde mich weiter damit auseinandersetzen - ihr habt mir ja schon gute Ansätze gegeben.
Achso, noch etwas. Kann ich die Geschwindigkeit auch drosseln? Wenn ich mit voller Bandbreite an das Gegenüber hochlade, beschwert sich mein Mitbewohner, dass sein Spiel leckt.
Ben

gandime 11. Sep 2006 21:26

Re: Indy : Datei von Server an Client senden
 
also mit der geschwindigkeitsbegrenzung habe ich hier schonmal nachgefragt aber keiner wusste was und bis jetzt habe ich auch noch nichts gefunden


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz