AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Dateien senden und empfangen (Delphi6/Indy9)
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien senden und empfangen (Delphi6/Indy9)

Ein Thema von chri_ri · begonnen am 17. Nov 2007 · letzter Beitrag vom 13. Aug 2008
Antwort Antwort
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
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#2

Re: Dateien senden und empfangen (Delphi6/Indy9)

  Alt 13. Aug 2008, 17:57
Also ich kenne mich leider nicht gut aus,
aber wie wäre es wenn du dazu einfach jedem Progammteil sowohl Server als auch Client beifügst?!
Beim Empfangen nutzt das Programm den Clienten und wenn der Benutzer etwas senden will macht er das per servermode. Hat den Vorteil dass du nur ein Programm schreiben musst mit immer demselben Code.
Hoffe das funkioniert so auch...

mfg 64Jabor
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
Benutzerbild von MSSSSM
MSSSSM

Registriert seit: 18. Apr 2008
223 Beiträge
 
Delphi 7 Professional
 
#3

Re: Dateien senden und empfangen (Delphi6/Indy9)

  Alt 13. Aug 2008, 18:39
Gibt es kein AThread.Connection.WriteStream?
Oder möchtest du das ganze später senden?
Marius
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 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