Ergebnis 1 bis 7 von 7

Thema: [C++] Datei von einem Server downloaden

  1. #1
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard [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.

    Code:
    #include <windows.h>
    #include <winsock.h>
    #include <stdio.h>
    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    
    //Prototypen
    int startWinsock&#40;void&#41;;
    
    int main&#40;&#41;
    &#123;
      long socket_con;
      SOCKET socket_res;
      SOCKADDR_IN addr;
      char buffer&#91;1024&#93;;
      
      // Winsock starten
      socket_con = startWinsock&#40;&#41;;
    
      // 
      socket_res = socket&#40;AF_INET, SOCK_STREAM, 0&#41;;
    
      // Verbinden
      memset&#40;&addr, 0, sizeof&#40;SOCKADDR_IN&#41;&#41;; // zuerst alles auf 0 setzten
      addr.sin_family = AF_INET;
      addr.sin_port = htons&#40;80&#41;; // wir verwenden mal port 80
      addr.sin_addr.s_addr = inet_addr&#40;"127.0.0.1"&#41;;
    
      socket_con = connect&#40;socket_res, &#40;SOCKADDR*&#41;&addr, sizeof&#40;SOCKADDR&#41;&#41;;
      char request&#91;&#93; = "GET / HTTP/1.0\r\n\r\n";
      // Daten austauschen
      send&#40;socket_res, request, strlen&#40;request&#41;, 0&#41;;
    	  socket_con = recv&#40;socket_res, buffer, 1024, 0&#41;;
        cout << buffer;
        getch&#40;&#41;;
      closesocket&#40;socket_res&#41;;
      WSACleanup&#40;&#41;;
      system&#40;"Pause"&#41;;
      return 0;
    &#125;
    
    int startWinsock&#40;void&#41;
    &#123;
      WSADATA wsa;
      return WSAStartup&#40;MAKEWORD&#40;2,0&#41;, &wsa&#41;;
    &#125;
    Hoffe hier gibt es Jemanden, der helfen kann
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Teeny
    Registriert seit
    04.08.2006
    Ort
    Schleswig-Holstein
    Beiträge
    41
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    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

  3. #3
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Ok, Danke soweit.
    Dann muss ich das ganze also per HTTP Protokol holen.
    Hab dazu als Beispiel im netzt folgendes gefunden:
    GET /foo.bar HTTP/1.1
    Host: www.example.com
    Nun die Frage, wich ich das ins C einbinde.
    Code:
    char request&#91;&#93; = "GET /index.html HTTP/1.1 Host&#58; 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?

  4. #4
    Gast

    Standard

    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.

  5. #5
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Is zwar schon ein wenig her, aber danke.
    Hatte es bereits rausgefunden

  6. #6
    Gast

    Standard

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

  7. #7
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Ja, mach nächste mal einen neune Thread auf, dass ist eine andere Frage
    Code:
    GET /ordner/datei.bla HTTP/1.1
    Host&#58; subdomain.example.com
    Einfach beim Host die Subdomain angeben.

Ähnliche Themen

  1. [C++] Binäre Datei downloaden
    Von lugga im Forum Forum für alle anderen Programmiersprachen
    Antworten: 3
    Letzter Beitrag: 05.11.2007, 11:46
  2. Textinhalt einer html.datei aus einem andere datei aufrufen.
    Von redindian im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 09.04.2007, 10:21
  3. Darf ich Firefox von meinem Server downloaden lassen ?
    Von wurmax im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 17.09.2006, 13:41
  4. Macromedia-Flash Datei Downloaden???
    Von Ilmer im Forum Computer - Internet Forum
    Antworten: 2
    Letzter Beitrag: 15.02.2006, 22:52
  5. Datei als Html in einem Unterordner speichern.
    Von ShadowABCDock im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 08.07.2005, 21:56

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •