Seite 1 von 1

Header bekommen

Verfasst: Sa Jul 14, 2012 1:51 pm
von Kmitska
Hallo Leute,

ich versuche nun den Header-Teil vom Inhalt zu trennen.
Ich weiß, dass der Header-Datei mit "\n\n" ende und dann anschließend der Inhalt kommt.
Hier habe ich versucht, einen Algorithmus zu schreiben, welcher den Header rausholt:

Code: Alles auswählen

    int endLines = 0;
    for(;;)
    {
        char* point = (char*) memchr(response+endLines, '\n', len); //Findet den nächsten newline-Zeichen || len = 1024
        int pos = point-response;
        endLines = pos;
        if(response[pos+1] == '\n') //Schaut nach, ob das nächstes Zeichen auch ein newline ist.
        {
            break;
        }
    }
Aber irgendwie bleibt das Programm hängen und ich komme nicht voran.
Woran könnte das liegen?

Re: Header bekommen

Verfasst: Sa Jul 14, 2012 2:05 pm
von cloidnerux
Das sieht sehr merkwürdig aus, was du da Fabrizierst. Warum suchst du Blockweise? Warum nutzt du für Texte(strings) nicht auch die String-Funktionen zum Suchen? Hast du eine Kontrolle drin, die Verhindert, dass du außerhalb der Array grenzen landest.
Gehst du sicher, dass du auch nicht \n überspringst, wenn du den Anfang neu setzt. Wird überhaupt ein \n\n gesendet?

Re: Header bekommen

Verfasst: Sa Jul 14, 2012 2:12 pm
von Xin
Ich würde einfach 4 Kilobyte lesen und das solange interpretieren, bis ich das Ende des Headers erreicht habe.
Erreiche ich zuerst das Ende des 4k-Blocks würde ich einen zweiten Block laden und dort weiter interpretieren. Den Übergang von einem Block musst Du hinbekommen.
Du kannst auch 8K nehmen und nach 4k, die hinteren 4k nach vorne ziehen und weitere 4k nachladen.

Wie Du das auflöst, ist Dir überlassen :-)

Halten wir nebenher aber auch mal fest, dass das NewLine nicht nur '\n', sondern auch ein Carriage Return '\r' ist.
cloidnerux hat geschrieben:Wird überhaupt ein \n\n gesendet?
Nopes.