So würde ich es machen (Pseudocode, ka ob es funktioniert):
Delphi-Quellcode:
function WriteHTTP(DataStream, HTTPOut: TStream; MaxDataRate: cardinal);
var
StartTime, ResumeTime: cardinal;
Buffer: packed array[0..64] of byte;
begin
ResumeTime := 0;
while DataStream.Read(@Buffer[0], length(Buffer)) > 0
begin
while GetTime() < ResumeTime do sleep(1);
StartTime := GetTime();
HTTPOut.Write(@Buffer[0], Length(Buffer));
ResumeTime := StartTime + 1000 / (DataRate / MaxDataRate);
end;
end;
So ähnlich habe ich zumindest die FPS-Beschränkung in einem Spiel implementiert, was sehr gut funktionierte.