tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
369
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    t0day Tutorials.de Gastzugang
    Moin,

    aktuell schreibe ich mir einen Simplen Webserver. HTML funktioniert ohne Probleme (Ist ja auch nicht sonderlich schwer, das zum laufen zu bringen), doch bei dateien, die Binär gesendet werden müssen, habe ich ein Problem:

    Mein Aktueller Code für HTML/Textdateien:
    file = ifstream, Datei die der Browser haben will
    body = std::string, Inhalt der Nachricht: Server -> Browser ohne HTTP-Header
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
            vector<string> v;
            string line;
            string buf("");
            while(getline(file, line))
                v.push_back(line);
            for(int i =0;i <v.size(); i++)
                buf += v[i];
            body += buf;

    Dies funktioniert leider nicht mit Binären Dateien, wie z.B. einem Bild. Hat jemand einen Vorschlag wie ich dies lösen kann?
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo,

    findest du dein Vorgehen nicht etwas umständlich? Erst zerlegst du die Datei in Zeilen und legst diese in einem Vector ab. Anschließend baust du die Zeilen in einer temporären Variable (buf) wieder zusammen (und verlierst damit im übrigen sämtliche Zeilenumbrüche – vermutlich auch das Problem bei Binärdateien) und hängst das Ergebnis dann an body an.

    Lies die Datei stattdessen direkt ein:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    
    file.seek(0, ios::end);
    int length = file.tellg();
    file.seek(0, ios::beg);
     
    char *buf = new char[length];
    file.read(buf, length);
    body.append(buf, length);
    delete[] buf;

    Allerdings funktioniert das nur für kleine Dateien gut, da der komplette Inhalt mindestens zweimal in den Hauptspeicher passen muss. Wieso speicherst du den Body überhaupt zwischen?

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

Ähnliche Themen

  1. Dateien über HTTP versenden
    Von takidoso im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 14.12.06, 14:24
  2. Dateien versenden via Winsock
    Von flotzi182 im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 12.05.06, 20:34
  3. LAN Dateien versenden
    Von Dark Ranger im Forum Visual Basic 6.0
    Antworten: 22
    Letzter Beitrag: 22.10.05, 12:44
  4. Dateien versenden mittels HTTPS
    Von takidoso im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 26.07.05, 10:32
  5. EXE-Dateien in Outlook als Anhang versenden
    Von Maximus im Forum Office-Anwendungen
    Antworten: 3
    Letzter Beitrag: 24.07.03, 14:21