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...
Liebe wochenendlichen Grüße,
Euer Alleinherrscher