AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datei über IdTCPServer als String versenden
Thema durchsuchen
Ansicht
Themen-Optionen

Datei über IdTCPServer als String versenden

Ein Thema von Lenny-k · begonnen am 9. Sep 2004 · letzter Beitrag vom 10. Sep 2004
Antwort Antwort
Lenny-k

Registriert seit: 9. Sep 2004
29 Beiträge
 
#1

Datei über IdTCPServer als String versenden

  Alt 9. Sep 2004, 12:06
Hallo! Ich bin noch ziemlich neu in Delphi und möchte eine Datei mit Hilfe der IdTCPServer Komponente als String versenden!
Das klappt auch bei manchen Dateien, aber andere Dateien werden einfach an einer Stelle abgeschnitten
Gibt es noch eine andere Möglichkeit, Dateien über IdTCPServer zu verschicken, als als String?
Ich habe Delphi 7...

MfG Lenny
  Mit Zitat antworten Zitat
linobrocken

Registriert seit: 9. Sep 2004
Ort: Elmshorn
8 Beiträge
 
#2

Re: Datei über IdTCPServer als String versenden

  Alt 9. Sep 2004, 12:44
Moin!

Also ich mach das in meinem Prog so:

Delphi-Quellcode:
procedure SEND();
var fs:TFilestream;
    Tempfile:string;

begin
//DasFile was du verschicken willst
Tempfile:="C:\temp\myfile.dat"
 //Überprüfen ob verbunden ist
 if not IdTCPClient.Connected then
  begin
   try
 //Sonst verbinden
    IdTCPClient.Connect;
   except
    ShowMessage('Falsche IP oder Port');
   end;
  exit;
  end;
//Filestream erzeugen
fs := TFileStream.Create(Tempfile, fmOpenRead or fmShareDenyWrite);
try
 IdTCPClient.OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
  try
   IdTCPClient.WriteStream(fs, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird}
   IdTCPClient.CloseWriteBuffer;
  except
   IdTCPClient.CancelWriteBuffer;
  raise;
 end;
finally
//Stream wieder freigeben
fs.free
end;
end;
Hoffe das hilft dir ein bisschen!

Gruß Pascal
  Mit Zitat antworten Zitat
Lenny-k

Registriert seit: 9. Sep 2004
29 Beiträge
 
#3

Re: Datei über IdTCPServer als String versenden

  Alt 9. Sep 2004, 22:03
und wie ist dann der code für den Client?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Datei über IdTCPServer als String versenden

  Alt 10. Sep 2004, 09:19
Zitat von Lenny-k:
und wie ist dann der code für den Client?
Das ist doch der Code für den Client. Versendet wird über IdTCPClient und empfangen mit IdTCPServer
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datei über IdTCPServer als String versenden

  Alt 10. Sep 2004, 13:10
Die Frage ist hier wohl eher, wie sehen die Dateien aus, bei denne es nicht klappt und wie werden sie auf dem Client dargestellt. Eine binär Datei hat wohl nicht darstellbare Steuerzeichen. Und wenn da ein #0 vor kommt bricht die Darstelleung in einem TMemo ab, da das das Stringende Zeichen ist. Sollen also auch binär Dateien mit Steuerzeichen verschickt werden, dann sollte man einen Stream nehmen und diesen verschicken oder, was ich nicht empfehlen würde, die Datei mit base64 codieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Lenny-k

Registriert seit: 9. Sep 2004
29 Beiträge
 
#6

Re: Datei über IdTCPServer als String versenden

  Alt 10. Sep 2004, 14:12
geht das nicht auch umgekehrt? ich muss nämlich Daten vom Server zum Client schicken...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Datei über IdTCPServer als String versenden

  Alt 10. Sep 2004, 14:16
Was Server und was Client ist, ist relativ. Du kannst natürlich auch auf den Server eine TClientSocket packen und umgekehrt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Lenny-k

Registriert seit: 9. Sep 2004
29 Beiträge
 
#8

Re: Datei über IdTCPServer als String versenden

  Alt 10. Sep 2004, 15:41
Ok... tut mir leid, dass ich nochmal alles über den Haufen werf, aber ich hab jetzt einfach selber mal versucht! Geht auch soweit, außer, dass ich das Problem hab, dass der Steam unendlich oft gesendet wird also die Datei unendlich groß wird ^^ vorrausgesetzt man unterbricht das Programm nicht...

Der Code:

Server
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var fStream:TFileStream;
begin
        fStream := TFileStream.Create('c:\test.ini',fmOpenRead   + fmShareDenyNone);
        AThread.Connection.OpenWriteBuffer;
        AThread.Connection.WriteStream(fStream);
        AThread.Connection.CloseWriteBuffer;
        FreeAndNil(fStream);
end;
Client
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ftmpStream:TFileStream;
begin
with IdTCPClient1 do begin
    Connect;
    ftmpStream := TFileStream.Create('c:\test2.ini',fmCreate);
    while connected do
        ReadStream(fTmpStream,-1,true);
    FreeAndNil(fTmpStream);
    Disconnect;
    end;
end;
  Mit Zitat antworten Zitat
Lenny-k

Registriert seit: 9. Sep 2004
29 Beiträge
 
#9

Re: Datei über IdTCPServer als String versenden

  Alt 10. Sep 2004, 15:45
ok, hat sich erledigt!!

AThread.Connection.Disconnect; hat beim Server noch gefehlt!
Danke für Eure Hilfe!
  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 08:59 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