![]() |
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:
Entsprechend der ServerCode (Client und Server sind in einem Programm untergebracht):
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;
Delphi-Quellcode:
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...
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; :zwinker: Liebe wochenendlichen Grüße, Euer Alleinherrscher |
Re: Dateien versenden mit Indy (Win 98 <-> 2000/NT/XP)
Kann mir denn gar niemand helfen :roll:
|
Re: Dateien versenden mit Indy (Win 98 <-> 2000/NT/XP)
Zitat:
|
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 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz