beliebigen Dateityp herunterladen und speichern



  • Hallo,

    es geht darum einen Downloader für Rapidshare zu schreiben.
    Der Download von Rapidshare ist soweit auch fertig nur kommen
    am ende nicht funktionstüchtige dateien bei heraus. Und obwohl
    ich die Suchfunktion sehrwohl genutzt habe scheint mir, ich könne
    das Problem nicht alleine lösen, daher bitte ich um eure hilfe.

    Ich vermute das Problem entweder in der Empfangsfunktion oder in der
    zum speichern des Empfangenen.

    Empfangsfunktion:

    int Client::mRec(string *buffer){
    	int temp = 0;
    	temp = recv(lhSocket,sRet,sizeof(char[100]),0);
    	(*buffer) = sRet;
    	return temp;
    }
    }
    

    Speicherfunktion:

    if(alsdruff.c_str() != "")
    	{
    		fstream datei;
    		//|ios_base::binary
    		datei.open("dateiname",ios_base::out);
    		datei<<alsdruff.c_str();
    		datei.close();
    	}
    

    Edit: Ups, falsche Funktion kopiert 😃



  • Seit wann empfängt man denn mit send ?



  • (*buffer) = sRet;
    

    Du überschreibst hier alles, was vorher in dem String stand und daher enthält er immer nur die letzten paar Bytes.
    Zudem ist string für Binärdateien völlig ungeeignet, da nullterminiert. Nimm lieber vector<unsigned char (a.k.a. byte)>.



  • das weiss ich da i s das problem nicht..ich speicher das dann in einer anderen Variable und soweiter und so fort...

    aber ist natürlich richtig..könnte ich auch einfach ein char array nehmen?



  • Zumal ist deine Speicherfunktion unbrauchbar. operator<< mit nem .c_str() schreibt ja nur Daten bis zu 'nem Nullbyte. ofstream.write() wäre da schon eher abgebracht.


Anmelden zum Antworten