Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.686 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Schnellere Kommunikation mit einer Fritzbox

  Alt 13. Okt 2017, 13:00
Zitat:
Erstmal könnte man sofort lesen und bei einem bekannten/erkannten "Ende" sofort aufhören
Dazu müsste man die Content-Length aus dem HTTP Header auswerten, richtig? Oder wie sonst würde man ein Ende erkennen? Problem: der HTTP-Header selbst ist Bestandteil dessen, was die Methode ReceiveBuffer empfängt.
Man kann sich bei HTTP nicht darauf verlassen, dass es immer einen Content-Length-Header gibt. Im allgemeinen ist das Ende dann, wenn die TCP-Verbindung geschlossen wird (außer bei Persistent Verbindungen ab HTTP/1.1, aber darum kümmern wir uns hier nicht). Dass die Verbindung geschlossen wurde, erkennst du daran, dass MSDN-Library durchsuchenrecv() die Länge 0 zurückgibt.

Ich weiß nicht, wozu das Sleep gut sein soll. Standardmäßig blockieren die Socket-Funktionen sowieso schon solange, bis Daten empfangen wurden. Außer sie wurden mit SetSockOpt in den nonblocking-Modus versetzt. Aber in dem Fall wäre das hier eine sehr instabile Frickelei.
  Mit Zitat antworten Zitat