Hallo
Ich verschicke daten über einen client socket.
Das funktioniert sehr gut nur möchte ich die bandbreite beschränken.
Das ist leider beim TClientSocket im Delphi nicht möglich (glaub ich).
Also will ich von der Datei oder von dem Memory stream nur jeweils 4 kb einlesen und pro sekunde verschicken. Das sollte die bandbreite reduzieren.
Wie mach ich das dann?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var AStream : TFileStream; Buffer : Pointer;
begin try AStream := TFileStream.Create('Datei.txt',fmOpenRead); buffer := AllocMem(AStream.Size); AStream.Read(Buffer^,AStream.Size); fMain.ClientSocket.Socket.SendBuf(buffer^,AStream.Size); finally FreeMem(buffer); FreeAndNil(AStream); end; end; |
Ich kenn mich mit files und streams nicht besonders gut aus.
aber ich müsste das irgendwie über eine while schleife machen:
while AStream.Position < AStream.Size do
begin
hier jetzt in den buffer nur 4 k einlesen und die position merken.
hier verschicken
sleep (1000); // vielleicht muß ich auch nicht warten ... muß ich testen.
end;
und die position mit f.seek merken und dann weiter einlesen, bis hald das ende erreicht ist.
aber leider hab ich da nicht ganz den durchblick.
Hoffe mir kann da jemand helfen.
Arnulf
Moderiert von
Gausi: Delphi-Tags hinzugefügt.