Server Antwort einlesen
-
hi,
ich möchte eine antwort einlesen und deswegen mit CONTENT-LENGTH
arbeiten, damit ich weiß, ab wann ich kein zeichen mehr einlesen
brauche da recv ansonsten noch eine zeit lang wartet bis es zu einem
fehler kommt.das problem:
CONTENT-LENGTH wird ja erst in der antwort selbst übermittelt.lösungs-idee:
kann man denn zB. bis zur ersten leerzeile zeichenweise einlesen,
und jedes mal überprüfen ob "CONTENT-LENGTH" schon im text enthalten ist,
und dann alles dahinter bis zum '/r/n' als zahl speichern und noch genau
soviel zeichen einlesen?!
wie habt ihr das gemacht?! - mein weg scheint mir ein wenig umständlich.
kann recv() nicht erkennen das er nichts mehr erhält, ohne wartezeit?!mfg
-
die antwort in zeilen zerteilen bis eine leerzeile kommt
-
libcurl: http://curl.haxx.se/libcurl/
-
Aus Deiner Ausführung nehme ich an, Du willst mit einem HTTP-Server kommunizieren. Da gibt es mehrere Möglichkeiten. Libcurl ist eine Lösung. Du kannst auch in Deinem Request einen Header "Connection: close\r\n" mit geben. Dann liest Du, bis der Socket geschlossen wurde. Oder Du verwendest HTTP-1.0, da ist das Standardverhalten. Ansonsten liefert der Content-Length-Header die Größe des Bodys, also die Anzahl der Bytes nach der ersten Leerzeile. Das RFC 2616 hilft hier weiter.
-
Hi,
ja, genau das will ich
'Connection: close' entspricht hier allerdings nicht meinen bedürfnissen,
da ich weiterhin mit dem server kommunizieren (wie du so schön sagtest) möchte.ich habe das jetzt folgendermaßen gelöst:
- zeilenweise einlesen
- wenn zeile == "\r\n" dann: einlesen abbrechen
- antwort nach "CONTENT-LENGTH" durchsuchen,
wenn gefunden -> alles dahinter bis zum nächten '\r' in iNumLen einlesen.
- noch iNumLen zeichen einlesendanke an alle - mfg