Webbrowser in C programmieren
lima-city → Forum → Programmiersprachen → C/C++ und D
adresse
adrezeile
anzeigen
beitrag
body
datei
deutsch
digit
englisch
entfernt inhalt
funktion
gen
laden
ladezustand
meisten funktionen
number
spezifikation
thw
verwendete protokoll
wieviele bytes
-
Hey Leutz!!!
Ich habe jetz mal angefangen einen einfachen WebBrowser in C zu programmieren. Die meisten Funktionen, die ich will habe ich jetzt schon, aber ich weiß nur noch nicht, wie ich zB.: einer ProgressBar sagen soll, dass sie den Ladezustand des Browsers anzeigen soll und wie ich die neue Adresse im Browser im Adressenfeld anzeigen kann.
Ich wäre sehr froh, wenn mir jemand helfen könnte.
mfG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
@ladebalken: Einfach während des Ladens immer wieder die Progressbar updaten. Du weißt doch beim laden wieviel von x bereits geladen wurde.
@addressfeld: Einfach updaten? Oder hab ich was falsch verstanden? -
Naja das mit der ProgressBar: ich finde nirgends eine Funktion, die mir den Ladestatus der Seite anzeigt.
2. Addressfeld: ich finde nirgends eine Funktion, die mir die gerade gültige Addresse anzeigt. -
@ladebalken: Na irgendwie musst du doch wissen wieviele Bytes du noch zu laden hast um die Website anzuzeigen. Das ist deine Grundlage
@adresszeile: häh? wie gibt man denn dann bei dir eine Adresse an? -
stefan-ebner schrieb:
Naja das mit der ProgressBar: ich finde nirgends eine Funktion, die mir den Ladestatus der Seite anzeigt.
Wenn du wissen willst, wie groß die Datei ist, musst du den HTTP Header auslesen:
http://www.faqs.org/rfcs/rfc2616.html
Sektion 14.13
14.13 Content-Length
The Content-Length entity-header field indicates the size of the
entity-body, in decimal number of OCTETs, sent to the recipient or,
in the case of the HEAD method, the size of the entity-body that
would have been sent had the request been a GET.
Content-Length = "Content-Length" ":" 1*DIGIT
An example is
Content-Length: 3495
-
wow...
gibts das auf deutsch auch???
lol
mfG
Das ist die original-Spezifikation fuer HTTP1.1 . Und solche RFCs werden nur auf Englisch veroeffentlicht, weil die ganze Welt Englisch spricht.
Was dich jetzt interessieren sollte, ist dass du nach einer Zeile im HTTP-Header Ausschau halten musst, die mit
Content-Length:
anfaengt, um die Dateigroesse in Bytes zu ermitteln.
Beitrag geändert: 24.10.2007 18:50:32 von bladehunter -
öhm ich würds mir sehr gut überlegen einen browser zu programmieren... mein bruder hat das mal versucht und hatte dann hinterher kein bock mehr als es an den HTML-Parser ging
-
Ok, ihr wisst schon, dass ich das mit dem WebBrowser Teil mache, oder?
mfG
EDIT thw: Doppelpost entfernt, Inhalt des zwieten Postings war:
Mit der "gültigen" Adresse meine ich, dass wenn man zb. google.at eingiebt kommt ja dann auch http://www.google.at/ und das soll der dann auch aktualisieren
mfG
Beitrag geändert: 29.10.2007 19:45:06 von thw -
Achso, dazu liest du einfach den Request Header aus. Dort gibt es ein Feld namens "Host". Da steht drin was du sucht. Das Http:// musst du selbst anfügen in deine Adresszeile, denn das bezeichnet bekanntlich nur das verwendete Protokoll.
-
Mit der "gültigen" Adresse meine ich, dass wenn man zb. google.at eingiebt kommt ja dann auch http://www.google.at/ und das soll der dann auch aktualisieren
mfG
Solche Dinge kannst du alle in dem von mir verlinktem RFC nachlesen.
Und wenn's ein vernünftiger Browser werden soll, dann solltest du das RFC 100%ig durcharbeiten und umsetzen.
Denn der beste HTML Parser nützt dir nix, wenn dein Browser nicht mal vernünftiges HTTP kann.
Beitrag geändert: 25.10.2007 18:04:44 von bladehunter -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage