Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  2 1352
Jeg driver for øyeblikket med å skriver et lite program som skal være lett kjørelig i C, dette programmet skal ta å sende par HTTP request til en server og motta data, samt behandle den og vise den til brukeren.

Problemet er at jeg har skrevet den med libcurl librarien, og den libcurl librarien bruker alt for mye ressurser, så jeg har slettet hele prosjektet og startet med tomme ark igjen. Har hittil satt opp en fungerende socket som sender http requestene til serveren med riktige header verdier, og mottar dataen med http headeren som leses inn i en i buffer.

Videre så trenger jeg å plukke ut 3 http header verdier i tillegg til http body delen. Så det første jeg tenkte på var å bruke bit manipulasjon, siden det er jo super rask og krever lite med ressurser, men etter å ha lest litt om http protokollen så ser ikkje dette ut som er gjennomførbart, så da blir det eventuelt string behandling.

Så det jeg lurer på er, er http protokollen oppbygd med samme prinsipper som ethernet protokollen, altså at hver verdi for en hvis antall bit/byte til å operere på? Eller er den på et så høyt nivå at hele protokollen med header og body er string basert?

Grunnen til at denne applikasjonen må være så lettvekter er fordi nettverks noden den skal kjøre på har ikkje ressurser disponibelt.
Sist endret av 0xFF; 20. januar 2013 kl. 18:35.
Trigonoceps occipita
vidarlo's Avatar
Donor
HTTP er nok ikkje fixed length for kvart felt nei. Den har relativt få formelle krav, og kan komme i veldig mange varianter, med ulike headerlengder etc.

T.d. kan ein HTTP-header inkludere cookies, expiry, redirects, debuggingsinformasjon, proxyinfo etc.

T.d.:

Kode

$ curl -I vg.no
HTTP/1.1 301 Moved Permanently
Server: Apache/2.2.15 (CentOS)
X-VG-WebServer: vgfront-web-01, vgfront-web-01
Location: http://www.vg.no/
Content-Type: text/html; charset=iso-8859-1
X-VG-SolveMe: uggc://jjj.it.ab/ynxfrgngg.ugzy
Date: Sun, 20 Jan 2013 17:36:45 GMT
Age: 580
Connection: keep-alive
X-Cache: HIT:638
Vary: Accept-Encoding,User-Agent
X-VG-WebCache: m323-varnish-02
X-Age: 580
vs

Kode

$ curl -I slashdot.org
HTTP/1.1 200 OK
Server: Apache/2.2.3 (CentOS)
SLASH_LOG_DATA: shtml
Cache-Control: no-cache
Pragma: no-cache
X-XRDS-Location: http://slashdot.org/slashdot.xrds
Content-Type: text/html; charset=utf-8
Content-Length: 105772
Date: Sun, 20 Jan 2013 17:37:41 GMT
X-Varnish: 1862081035 1862080556
Age: 41
Connection: keep-alive
Vary: Accept-Encoding
War room
0xFF's Avatar
Trådstarter Donor
Ok, takk for et rask svar. Da må det bli string manipulasjon.