![]() |
Datei an Client schicken (IdTCP)
Moin
Bevor ich sinnlos rumprogrammiere wollt ich euch mal frage ob es überhaupt geht, dass man mit der Indy Komponente IdTCPServer Daten an den Client schickt? Mfg |
Re: Datei an Client schicken (IdTCP)
Siehe
![]() Das muss dann natürlich genau andersrum passieren, eine Verbindung von Client zum Server vorausgesetzt. Gilt für die Indys ab Version 10. Gruß, ManuMF |
Re: Datei an Client schicken (IdTCP)
Server sendet Dateien an den Client oder der Client an den Server.
Und ja, es ist möglich. Indy 10 hat im IOHandler entsprechende Methoden zum schreiben von Streams, also auch Dateien. Also wenn der Client
Delphi-Quellcode:
ausführt, wird der Strean an den Server "gesendet".
IOHandler.Write( myStream );
-- Holger |
Re: Datei an Client schicken (IdTCP)
@storm1988: Wenn du es wie in meinem Beispiel machst, musste du nur die Code-Zeilen im with-Bereich austauschen, und zwar
Delphi-Quellcode:
und
// Client
with Acontext.connection do begin try Socket.Write(IDS, 0, true); finally Disconnect; end; end;
Delphi-Quellcode:
Natürlich müssen auch die Streams andersrum behandelt werden (Open-Dialog bzw. feste Datei beim Server, Save-Dialog etc. beim Client).
// Server
with Acontext.connection do begin try SizeOfIncomingStream := Socket.ReadInteger; Socket.ReadStream(IDS, SizeOfIncomingStream); finally Disconnect; end; end; Gruß, ManuMF |
Re: Datei an Client schicken (IdTCP)
Zitat:
Mfg |
Re: Datei an Client schicken (IdTCP)
Indy 10 kann das automatisch. Das wird dann automatisch über einen Buffer etc. geregelt. Unter Indy 9 war das noch etwas komplizierter.
Antwort ist also: Dateien können beliebig gross sein. -- Holger |
Re: Datei an Client schicken (IdTCP)
Habe es bis 560MB ausprobiert, ging tadellos (hat halt nur lange gedauert).
|
Re: Datei an Client schicken (IdTCP)
geringe Bandbreite? :zwinker:
|
Re: Datei an Client schicken (IdTCP)
Hi Danke für die Infos :thumb:
Habs nämlich früher immer mit indy 9 realisiert und des war extrem umständlich...... |
Re: Datei an Client schicken (IdTCP)
Moin
Ich hät jetzt doch nochmal eine Frage zu deinem Source Code. Immer wenn ich mein Programm mit dem Code Compiliere kommt bei mir diese Fehlermeldung: Undefinierter Bezeichner: 'TidStreamVCL'. Muss ich da noch irgendwas zusätlich einbinden?? Mfg |
Re: Datei an Client schicken (IdTCP)
ja, "IdStreamVCL". Muss ich noch korrigieren.
@hflick: Naja, war in einem 100MBit/s-LAN. Aber lange ist relativ :zwinker: [edit]@storm1988: Moin ist gut... :roll: [/edit] |
Re: Datei an Client schicken (IdTCP)
So ich hab des verschicken mit die Datein so umgeschrieben, dass ich diese vom Server zum Client schicken kann. Jedoch wenn die die Datein größer als ca. 24 MB werden bekomme ich folgende Fehlermeldung : Der Prozess kann nicht auf die Datei zugreifen , da sie von einem anderen Prozess verwendet wird!!.
Hier mal mein umgeschriebener Source Code: Client:
Delphi-Quellcode:
Und für den Server:
procedure DateiSendeButtonClick;
var FStream : TFileStream; SizeOfIncomingStream : Integer; IDS : TidStreamVCL; begin { Die Streams initialisieren - Beim IDS wird FStream gleich eingelesen } FStream := TFileStream.Create(Pfad, fmCreate); IDS := TidStreamVCL.Create(FStream); { Senden } with frmServer.IdTCPClient1 do begin SizeOfIncomingStream := Socket.ReadInteger;; Socket.ReadStream(IDS, SizeOfIncomingStream); end; IDS.VCLStream.Position := 0; { Nicht vergessen ;-) } FStream.Free; IDS.Free; end;
Delphi-Quellcode:
Könnte mir jetzt vielleicht wer sagen wo, dass Problem liegt?????
procedure KopierenToClient (AContext: TIdContext;Pfad : String);
var FSTream : TFileStream; SizeOfIncomingStream : Integer; IDS : TidStreamVCL; begin FStream := TFileStream.Create(Pfad,fmOpenRead or fmShareDenyWrite) IDS := TidStreamVCL.Create(FStream); { Empfangen } with AContext.Connection do begin Socket.Write(IDS, 0, true); end; FStream.Free; IDS.Free; end; Mfg st0rm |
Re: Datei an Client schicken (IdTCP)
Siehe im anderen Thema ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz