Also ich habe jetzt schon die halbe Nacht im Internet gesucht und immernoch keine Lösung gefunden. Mein Problem ist das senden von Dateien zwischen TIdTCPClient und TIdTCPServer. Genauer gesagt eigentlich nur vom TIdTCPServer zum IdTCPClient. Andersrum gehts perfekt.
Ich verwende folgenden Code für das Senden vom Client zum Server (ein wenig vereinfacht und verändert):
Der Client:
--------------------------------------------------------------------
Delphi-Quellcode:
procedure TMain.btn_sendClick(Sender: TObject);
var
fs: TFileStream;
begin
if OpenDialog.Execute then begin
with IdTCPClient do
begin
fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen
try
OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
try
WriteStream(fs, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird}
CloseWriteBuffer;
except
CancelWriteBuffer;
raise;
end;
finally
Disconnect;
fs.Free;
end;
end;
end;
end;
Der Server:
--------------------------------------------------------------------
Delphi-Quellcode:
procedure TMain.IdTCPServerExecute(AThread: TIdPeerThread);
var
fs: TFileStream;
SizeOfIncomingStream: integer;
begin
if SaveDialog.Execute then begin
fs := TFileStream.Create(SaveDialog.Filename, fmCreate or fmShareExclusive);
with AThread.Connection do
try
SizeOfIncomingStream := ReadInteger; //Größe des Streams empfangen
ReadStream(fs, SizeOfIncomingStream); //und übergeben
finally
fs.Free;
end;
end;
end;
So. Nun noch einmal zu meiner Frage:
Wie kann ich umgedreht senden? Also nicht vom Client zum Server sondern vom Server zum Client?
Schonmal THX im Vorraus!
mfg. chri_ri