Einzelnen Beitrag anzeigen

tuxic

Registriert seit: 3. Feb 2004
Ort: Berlin
90 Beiträge
 
#1

Indy TCPClient + MMS-Protokoll

  Alt 19. Jul 2004, 20:08
Hi,
Ich benutze folgenden Code, um eine Datei über HTTP 1.0 ziehen (und nein, ich will nicht idHTTPClient benutzen ):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  send:tstringlist;
  stream:tfilestream;
begin
  stream := tfilestream.Create('d:\foo.wmv', fmCreate);
  send := tstringlist.Create;

  send.Clear;
  send.Add('GET /foobar.wmv HTTP/1.0');
  send.Add('Accept: */*');
  send.Add('User-Agent: NSPlayer/4.1.0.3928');
  send.Add('Host: localhost');
  send.Add('Pragma: no-cache,rate=1.000000,stream-time=0,stream-offset=4294967295:4294967295,request-context=4,max-duration=2147548740');
  send.Add('Pragma: xPlayStrm=1');
  send.Add('Pragma: xClientGUID={5B704FE1-EFB9-49F5-A781-1DA8B8F0A23E}');
  send.Add('Pragma: stream-switch-count=4');
  send.Add('Pragma: stream-switch-entry=ffff:2:0 ffff:3:0 ffff:4:2 ffff:5:2');

  i.Host := 'localhost';
  i.Port := 80;
  i.Connect();
  i.SendCmd(send.Text);

  i.ReadStream(stream, -1, true);

  send.Destroy;
  stream.Destroy
end;
Es handelt sich hier um das MMS-Protokoll (über HTTP). Leider erhalte ich nicht alle Daten. Ich erhalte immer nur 1.800.403 Bytes, anstatt fast 3MByte. Ausßerdem blockiert bei ca. 1,7MByte das Programm, danach kommen ein paar Daten die da aber nicht sein sollten .

Habe ich vergessen ein Size zu setzen? Oder ist vielleicht mein Header verkehrt? Ich habe den Header mitgesnifft, als MPlayer den Stream saugte - er sollte also richtig sein.
Irgendwer eine spontane idee, was ich verkehrt gemacht habe?

MfG
Daniel
LOAD "Windows XP", 8, 1
---- immerhin ein floppy, und keine Datasette ----
http://www.devloop.de
  Mit Zitat antworten Zitat