Winsock: Connection mit einem Http Server
-
Hallo,
Ich möchte eine Datei von einem HTTP Server herunterladen. Zu diesem Zweck erstelle ich eine Verbindung mit Winsock auf Port 80. Das Problem, wie kann ich vor dem Download festellen wie groß die Datei ist, die ich herunterlade? (Sonnst kann ich ja keinen Speicher reservieren...)
-
Ich dachte immer das steht eh in der Antwort unter Content-Length

MfG SideWinder
-
Willst du wirklich Speicher reservieren? Schreib die Datei doch direkt auf die Festplatte!
-
@SideWinder - AFAIK (zumindest nach eigenen Experimenten
) nicht immer. Aber es bietet sich eher an, jedesmal die Daten direkt abzuspeichern oder für Speedfanatiker, die nicht so viele Plattenzugriffe haben wollen, einen Zwischenbuffer fester Größe zu benutzen.
-
Das bringt mich nicht so viel weiter, ich brauche die Größe auch für die Fortschrittsanzeige... Wie kann ich die Größe jetzt rauskriegen?
-
Content-Length
-
Content-Length schrieb:
Content-Length
Und wie krieg ich die?
Wenn ichGET /xy.txt HTTP/1.1 Host: xy.xy.demache,bekomme ich keine Content-Lenght
-
gib nen konkretes beispiel an das man auch ausprobieren kann. also echter server-adresse.
-
im HTTP Header muss es sein - wie aber erwähnt, nicht immer. Hab hier auch noch irgendwo den Code mit Fortschrittsanzeige rumfliegen (und das hat auch nicht bei allen Servern geklappt)
-
Ich muss eine Datei von dem Server runterladen:
GET /index.php HTTP/1.1 Host: joomoo.g2host.deIch sehe bei der Ausgabe von dem Server keine Content-Lenght.
Nebenbei nochmal ne andere Frage, die Ardresse hat ein Alias Dns Namen (www.watteimdocht.de.vu). Wenn ich zu der connecte (mit telnet auf port 80), dann finde ich keine einzige Seite. Woran liegt das?
-
ch sehe bei der Ausgabe von dem Server keine Content-Lenght.
wenn man schon HTTP selber nachprogrammiert, dann schaut man doch auch in die zuständige RFC - oder nicht?
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13Nebenbei nochmal ne andere Frage, die Ardresse hat ein Alias Dns Namen (www.watteimdocht.de.vu). Wenn ich zu der connecte (mit telnet auf port 80), dann finde ich keine einzige Seite. Woran liegt das?
das liegt an den virtual hosts (meinst Du jetzt eigentlich den de.vu Host oder die "Endadresse" auf die dann umgeleitetet wird? ) Das macht man, um auf einem Server mehrere Adressen hosten zu können. Dann braucht der HTTP-Header auch eine Host angabe.