Header bekommen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Header bekommen

Beitrag von Kmitska » Sa Jul 14, 2012 1:51 pm

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?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Header bekommen

Beitrag von cloidnerux » Sa Jul 14, 2012 2:05 pm

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?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Header bekommen

Beitrag von Xin » Sa Jul 14, 2012 2:12 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten