Buffer size dynamisch ermitteln



  • CStdioFile* pFile = NULL;

    pFile = session.OpenURL("http://localhost/test.asp",0,INTERNET_FLAG_TRANSFER_BINARY);

    UINT BUFFERSIZE = pFile->GetLength();
    char* buffer = new char[BUFFERSIZE];

    Ich wollte dynamisch den BufferSize ermitteln, damit ich den ganzen buffer lesen und wieder schreiben, die Methode pFile->GetLength() ist eigentlich richtig, aber wird nicht den ganzen Buffer ausgelesen sondern nur ein Schnitt davon, Gibt es vielleicht andere Möglichkeit, wie ich Buffersize dynamisch ermitteln kann! 🙂



  • weil hier ganz wichtig ist, deshalb gibt es kein Antwort, oder weil keiner die Frage beantworten kann



  • Die Frage kann sicher jemand beantworten wenn du konkret sagtst wo dein Problem liegt. Desweiteren gibt es auch noch Leute die ab und zu arbeiten, zur Schule gehen oder studieren. Um die Uhrzeit ist hier nicht immer die Hölle los. Benutz lieber ein CHttpFile (->MSDN) anstatt CStdioFile.



  • Ich bekomme aber dieser Fehler meldung als ich CHttpFile mit CStdioFile ersetzt habe.

    error C2440: '=' : 'class CStdioFile *' kann nicht in 'class CHttpFile *' konvertiert werden



  • Ich habe versucht den BufferSize dynamisch zu ermitteln, ich bekomme aber nicht den ganze Seite , nur ein Teil davon, was soll eigentlich in diesem Teil Falsch sein, oder was soll ich zusätzlich noch hinzufügen?

    CInternetSession session;
    CHttpConnection* pConnection = NULL;
    CHttpFile* pFile = NULL;

    DWORD nBytesRead = 0;

    pFile=(CHttpFile*)session.OpenURL("http://localhost/test.asp");//Open file

    UINT BUFFERSIZE = pFile->GetLength();
    char* buffer = new char[BUFFERSIZE];

    // read file
    nBytesRead = pFile->Read(buffer,BUFFERSIZE-1);
    buffer[nBytesRead] = '\0';



  • nBytesRead == BUFFERSIZE-1 ?

    Wieviel bytes soll er lesen und was steht nach dem lesen in nBytesRead?



  • // read file
    nBytesRead = pFile->Read(buffer,BUFFERSIZE-1);
    buffer[nBytesRead] = '\0';

    nach diesen zeilen habe ich diese zeile geschrieben:

    pCtxt->WriteClient(buffer,&nBytesRead,0); // Function used to communicate information back to client

    soll alle bytes lesen die er bekommt!
    ich meine die Daten die von dem Server zum Client zurückgeliefert werden .



  • Schreib mal bitte was GetLentgh() liefert und was in nBytesRead drinnsteht nachdem Du gelesen hast.



  • ich weiss nicht ob GetLength() überhaupt richtig ist, ich will damit einfach erzielen, dass ich die Grösse der Datei ,die von dem Server zum Client zurückgelierfert worden ist, ermitteln.
    Vorher habe ich BUFFERSIZE = 35000; eingesetzt.
    d.h wird nur 35000 Bytes gelesen und dann wieder geschrieben mit WriteClient().

    Aber was soll ich machen wenn die Datei noch grösser als 35000 Bytes????

    Deshalb wollte ich gern genauso in dieser Zeile BUFFERSIZE = Variblename;
    eingeben, damit immer dynamich ermittlt worden ist wieviel Bytes gross ist ,die Datei ,die von dem Server zum Client zurückgeliefert worden ist, bevor diese Datei gelesen wird!!!!

    Vielen Dank für die Unterstützung!



  • Hast Du es denn einfach mal probiert ?

    Laut MSDN gibt Dir das die Länge der Datei zurück.

    Gruß
    Michael



  • wie kann ich denn die Daten, die von dem Server zum Client zurückgeliefert werden, abfragen?

    Ist vielleicht diesen Sytax richtig???

    CInternetSession session;
    CHttpFile* pFile = NULL;

    pFile=(CHttpFile*)session.OpenURL("http://localhost/test.asp");//Open file


Anmelden zum Antworten