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.