Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdTCPServer: Verbindung herstellen, komme nicht weiter! (https://www.delphipraxis.net/141246-tidtcpserver-verbindung-herstellen-komme-nicht-weiter.html)

Hedge 5. Okt 2009 19:06


TIdTCPServer: Verbindung herstellen, komme nicht weiter!
 
Versuche einen IceCast-Server vorzugaukeln.
Das Programm sendet folgende Daten via OnConnect und darauf OnExecute:

Zitat:

Verbinden: SOURCE /stream.ogg HTTP/1.0
Nachricht: User-Agent: Native Instruments IceCast Uplink
Nachricht: Authorization: Basic c291cmNlOmhhY2ttZQ==
Nachricht: Host: localhost:8000
Nachricht: Accept: */*
Nachricht: Connection: Close
Nachricht: Accept-Encoding: identity;q=0.5, gzip;q=1.0
Nachricht: content-type: application/ogg
Nachricht: ice-name: Traktor Stream
Nachricht: ice-url: http://localhost:8000/stream.ogg
Nachricht: ice-genre: Mixed Styles
Nachricht: ice-description: Traktor Stream
Nachricht: ice-bitrate: Quality 0
Nachricht: ice-private: 0
Nachricht: ice-public: 1
Nachricht: ice-audio-info: ice-samplerate=44100;ice-bitrate=Quality 0;ice-channels=2
Durch einen WireShark-Mitschnitt weiß ich, dass mein Server daraufhin den Status-Code 200 senden muss (HTTP/1.0 200 OK).

Zum Probieren schicke ich das bei jedem Aufruf von OnExecute mit, aber es tut sich nichts.

Delphi-Quellcode:
procedure TForm1.ServerExecute(AContext: TIdContext);
begin
Memo1.Lines.Add('Nachricht: ' + AContext.Connection.IOHandler.ReadLn);
AContext.Connection.IOHandler.WriteLn('HTTP/1.0 200 OK');
end;
Was mache ich verkehrt?

Klaus01 5. Okt 2009 19:50

Re: TIdTCPServer: Verbindung herstellen, komme nicht weiter!
 
Hallo,

onExecute wird erst dann ausgeführt wenn der Client etwas zum Server schickt
und nicht schon beim verbinden.
Wenn Du beim Verbinden etwas schicken willts solltest Du onConnect benutzen.

Grüße
Klaus

Hedge 5. Okt 2009 19:52

Re: TIdTCPServer: Verbindung herstellen, komme nicht weiter!
 
Das Verbinden scheint wohl klar zu gehen, denn via OnExecute kommt ja der ganze Request-Header an.

Ich müsste dem Client also eigentlich nur den Statuscode 200 so wie oben gezeigt zurückschicken.
Leider funktioniert das nicht so richtig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz