Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Dateien versenden mit Indy (Win 98 <-> 2000/NT/XP) (https://www.delphipraxis.net/34330-dateien-versenden-mit-indy-win-98-2000-nt-xp.html)

alleinherrscher 21. Nov 2004 11:53


Dateien versenden mit Indy (Win 98 <-> 2000/NT/XP)
 
Hi@all

Ich benutzte den Standard - Indy - Code für das senden von Dateien von Client an Server, allerdings habe ich folgendes Problem: Auf dem einen Rechner ist Windows 2000, auf dem anderen 98. Auf einem dritten ist NT4.
Wenn ich dateien von 2000 nach 98 über mein Programm schicke, läuft alles wie vorgesehen, wenn ich allerdings von 98 auf 2000 oder NT Daten (also filestream) schicke, hängt sich der 98 - Client bei Dateien die größer als 0,5mb sind, auf...jemand ne ahnung warum? Auf beiden Rechner kommt exakt das gleiche Programm zur Anwendung!

Zwischen 2000 und NT ist das Daten schicken absolut kein Problem.

Hier die entsprechenden Routinen:


Der Client-Code:

Delphi-Quellcode:
Idtcpclient1.writeln('~fsm'+opendialog1.filename); <--Hier wird dem Server der Dateiname übergeben

memo1.lines.add('Trying to send File '+filename1 + ' to the remote computer');

  with IdTCPClient1 do
  begin

    fs := TFileStream.Create(filename1, fmOpenRead); //Datei in FileStream einlesen
     try
      OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
      try
       WriteStream(fs, true, true); <--- Hier bleibt Windows 98 hängen!!!
        CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      fs.Free;
      Disconnect;
    end;
      memo1.lines.add('Transfer done!');
  end;


 end;
Entsprechend der ServerCode (Client und Server sind in einem Programm untergebracht):

Delphi-Quellcode:
text:=AThread.Connection.ReadLn();

typ:=copy(text,0,4);

if typ='~fsm' then begin
dateiname:=copy(text,pos('~fsm',text)+4,length(text)-4);
dateiname:=extractfilename(dateiname);
filename1:=dateiname;
endung:=copy(dateiname,pos('.',dateiname),length(dateiname)-pos('.',dateiname)+1);
savedialog1.FileName:=filename1;
savedialog1.Filter:=(endung+'|'+endung);


//FILES EMPFANGEN
 with AThread.Connection do
    try
     fs := TFileStream.Create('C:\filestream.tmp', fmCreate or fmShareExclusive);
            SizeOfIncomingStream := ReadInteger; //Größe des Streams empfangen
      ReadStream(fs, SizeOfIncomingStream); //und übergeben
    finally
      fs.Free;
      streamsend:=False;
      Disconnect;
      end;

    AThread.Synchronize(speichern_unter);



exit;
end;
Wäre cool wenn jemand ne Idee hätte, hab allerseits die Indy Version 9.00.17.src und hoffe, ich muss keine andere installieren, weil das ja immer nen Aufstand ist...

:zwinker: Liebe wochenendlichen Grüße,

Euer Alleinherrscher

alleinherrscher 21. Nov 2004 15:47

Re: Dateien versenden mit Indy (Win 98 <-> 2000/NT/XP)
 
Kann mir denn gar niemand helfen :roll:

r_kerber 21. Nov 2004 16:21

Re: Dateien versenden mit Indy (Win 98 <-> 2000/NT/XP)
 
Zitat:

Zitat von alleinherrscher
Kann mir denn gar niemand helfen

Die Frage stand gerade mal 4 Stunden hier im Forum. Du kannst nicht erwarten nach dieser Zeit bereits eine Antwort zu erhalten. Das Pushen von Beiträgen nach dieser kurzen Zeit ist hier nicht erwünscht. Also warte noch etwas, gut Ding will Weile haben.

alleinherrscher 22. Nov 2004 16:03

Re: Dateien versenden mit Indy (Win 98 <-> 2000/NT/XP)
 
Ok, sorry, tut mir ja leid :angel:

Think of :dp:

Aber dann will ich die frage mal etwas umformulieren: wie kann ich auf möglichst einfachem wege dafür sorgen, dass die datei beim senden über writestream in ca. 10kb großen packeten versendet wird. Habe mir hier ein Beispiel angeguckt, allerdings ist das ziemlich komplex und mit vielen anderen funktionen...ich blicke da nicht so ganz durch ... :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 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