[C++] Datei von einem Server downloaden

  • Moin
    Da es ja noch kein c++ Forum gibt, poste ich das einfach mal hier, bitte sagen, wenns falsch ist.
    Ich versuch seit einiger Zeit, eine Datei von einem http Server mit einfachem Klick Downloaden zu lassen ( Durch den Server gesendet ).
    Z.B. solte eine .php Datei auch ausgeführt werden, und dann die Daten durch die .exe geholt und gespeichert werden.

    Das Speichern von Datein bekomme ich auch schon hin.
    Nun hab ich es geschafft, mehr schlecht als recht, eine Verbindung zum Server herzustellen.
    Kann mir Jemand sagen, wie ich nun weitermachen muss??
    Bin noch ziemlicher Neuling im C++ Gebiet, deshalb bitte verständlich erklären.
    Hier mein bisheriger Code.


    Hoffe hier gibt es Jemanden, der helfen kann :D

  • also ich habe wenig erfahrung mit netzwerk programmierung. Es beschränkt sich auf einige kleine experimente mit der wxWidgets API für Sockets. Aber wenn deine verbindung bereits steht müsstest du aus dem socket lesen und in ihn schreiben können. Schon irgendwo was von einer read und write funktion gehört?
    Ich glaube sogar das du read funktionen für dateien (fread) verwenden kann um daraus zu lesen und fwrite um in den socket zu schreiben. Versuch es mal.

    EDIT: Achja und falls es nicht klappt solltest du immer den fehler mit ferror abfragen. Dann weist du woran es scheitert ;)

    EDIT II:
    Habe gerade nochmal gegoogelt und zum suchbegriff "winsock.h" folgendes gefunden:
    > Grundlegende Netzwerkprogrammierung mit WinSock
    > Einführung im Openbook "C von A bis Z"
    > Windows Sockets (Englisch)

    Dort steht auch das es mit send und recv gehen soll. Mein tipp mit fread und fwrite war also falsch!
    Für alle die interesse haben ;P

  • Ok, Danke soweit.
    Dann muss ich das ganze also per HTTP Protokol holen.
    Hab dazu als Beispiel im netzt folgendes gefunden:

    Zitat

    GET /foo.bar HTTP/1.1
    Host: http://www.example.com

    Nun die Frage, wich ich das ins C einbinde.

    Code
    char request[] = "GET /index.html HTTP/1.1 Host: localhost";


    So hab ichs verstanden, bringt aber kein Ergebnis.
    Das Programm läuft so ca. 5 Sekunden, dann hört die Sanduhr wieder auf, ich erhalte jedoch keine Ausgabe der daten.

    Ausgabecode etc. siehe oben.
    habe das ganze auch bei einem Webserver versucht, selbes Ergebnis.
    Kann mir da noch Jemand helfen?

  • char request[] = "GET /index.html HTTP/1.1 Host: localhost";

    Ich glaube hier steckt der Fehler. \r\n\r\n fehlt. Damit der Server weiss wann die Anfrage zu ende ist muss eine leere Zeile gesendet werden. Localhost kannst du wegglassen, hat für den Server keinen nutzen da dieser deine IP bereits kennt.

  • Weiss jemand wie man den request String umformullieren muss um auf Subdomains zugreiffen zu können?