Zitat von
danu1104:
Meine frage, wie verarbeitet man bytes oder buffer, bzw wie finde ich raus um welchen typ stream es sich hier handelt.
Hallo danu1104, verwende ReadBuffer oder ReadStream, wie das bei den Indys genau heisst musst Du nachschlagen.
Wenn Du nun den Buffer gefüllt hast, ziehst Du rückschlüsse auf das Protokoll.
z.B. im Buffer sind 19 Byte, wir nehmen mal willkürlich ein Protokoll an, dass wie folgt aufgebaut ist.
4 Byte Länge der Daten + 4 Byte MsgID = 8 Byte, verbleiben 11 Byte.
Jetzt überprüfen wir ob diese Annahme stimmt?
Wir kopieren die ersten 4 Byte aus dem Buffer in eine integer Variable (iLen).
move(Buffer^, iLen, SizeOf(Integer));
Wenn der Wert der integer Variable nun 11 Byte anzeigt, haben wir den Header geknackt.
Dann werden die nächsten 4 Byte kopiert, und wir sehen die ID oder sonst ein Integer Logon Commando etc.?
Wenn der ermittelte Wert unserer integer Variable(n) undefinierte Werte liefert, müssen wir noch ein Byteshifting aller
Networkorder durchführen.
iLen := ntohl(DataRec.cbData);
Der Header kann auch geringfügig anderst aufgebaut sein, hier heisst es einfach durchprobieren.
lg. Astat