mariob: Ja liegen alles einem Array of Char in einem DB.
d.h. du liesst erstmal die 4000 Bytes komplett ein - und die länge ist Fix, also hast du gar keine Ende-Kennung so wie
in den vorherigen Post wo du ..., ENDE; als Teil der Daten zeigst
2. Von was? Vom Gesamtstring? Nein!
falls es keine Ende-Kennung gibt - oder eine fixe Menge an Zeichen empfangen werden muss
stell ich mir einfach die Frage ob das nicht einfach inkrementel geht - also so wie du
die Happen per TPC/IP bekommst - aber das setzt einen Parser vorraus - der sich nicht daran stoert das nur Teildaten da sind
also ist auch der "Müll" klar mit "NAME=WERT," getrennt? gibts es die Kommas wirklich im Datenstrom und ist
immer klar das NAME=WERT keine Kommas enthalten darf - um nicht mehrdeutig zu sein?
Was darf alles in einem NAME enthalten sein, wird immer mit = zwischen NAME und WERT getrennt,
ist ein Komma immer das Ende eine Zuweisung - solche Fragen hast du bisher sehr unklar beantwortet - weil du dich nur
in deiner Optimierung ausdrückst
Meiner Meinung nach muss ich bei einer inkrementellen Suche durch meinen Empfangspuffer viel zu viele Müll-Infos auswerten bzw. zwangsweise betrachten
dein "Suchen" nimmt genau so viele Bytes in die Hand wie der Parser
wenn deine Syntax klar formalisiert ist schlägt der Parser jedes noch so strategische einstechen, suchen usw. - und ist dazu noch sicherer und schneller
Wie gesagt: Stell doch bitte mal
richtige/vollstaendige Testdaten ein oder besser noch ein Wireshark-Log dann kann man das leben Objekt betrachten
Vielleicht ist mein Verständnis von einem Parser auch nicht korrekt, ich werd mir das vielleicht nochmal etwas detailierter zu Gemüte führen.
Wir reden hier nur von einer trivialen Statemachine die deine Name=Wert Paare trennt - aka trivial regex - aber solange du die Syntax deiner Daten nicht verrätst sondern
deine Daten nur mit Hilfe deiner Optimierungsgedanken erklärst ist es einfach nicht klar ob es viel einfacher gehen würde