Einzelnen Beitrag anzeigen

Benutzerbild von chri_ri
chri_ri

Registriert seit: 16. Okt 2007
Ort: Markkleeberg
37 Beiträge
 
Delphi 7 Enterprise
 
#1

Dateien senden und empfangen (Delphi6/Indy9)

  Alt 17. Nov 2007, 02:01
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
  Mit Zitat antworten Zitat