Winsock: Daten Zeilenweise empfangen



  • moin!

    ich versuche gerade mit einer client anwendnung (irc spielerei 😉 ) daten von einem server zu empfangen. is auch alles soweit alles ok, nur kommen die daten wie ein haufen müll an. um aber das weiterzuverarbeiten, muss das schön brav in einzelnen zeilen ankommen. gibt es hier für dieses (häufige?) problem zufällig einen trick? bin für alles dankbar 🙂

    so long

    eagle2k



  • moin meister ...

    wirst wohl den Empfangspuffer nach einem oder mehrere Zeilenumbrüche durchsuchen müssen ...

    Prblem ist halt und das konnte ich noch nicht so recht lösen, der Zeilenumbruch
    ist ja \n\r oder \r\n oder was auch immer besteht aus 2 Zeichen,

    was nun wenn der Zeilenunbruch durch die Puffergrenze getrennt wird, also
    Buffer[1024] und Buffer[1023] == 0x13 und Buffer[0] == 0x10 ???

    mfg
    RB



  • hmm, ich hatte bisher den ansatz, die daten per strtok aufzutrennen. wenn dann das letzte element leer ist, wurden komplette zeilen übertragen, andernfalls ist das letzte element ein teil des nächsten ersten elements. nur bei der umsetzung klappts noch nicht, weil scheinbar der delimiter immer falsch ist und meine variable leer bleibt... 😞



  • ja mit strtok bist du auf dem richtigen weg. der Zeilenumbruch is \r\n nicht \n\r.
    ich hab das mal so gemacht:

    lines = strtok(buffer, "\r\n");
    while(lines != NULL) {
        /* ... */
        lines = strtok(lines + (strlen(lines)), "\n");
    }
    

    buffer is der buffer in den von recv() geschrieben wird.


Anmelden zum Antworten