Zitat von
Jens Hartmann:
..erklären könntest.
Hallo Jens Hartmann, ich fasse mal alles zusammen, um sicherzustellen das wir vom selben reden.
1. Du hast eine Hardware, die mit einer Server-Software eine
TCP/
IP Socket Verbindung, zwecks Messdatenübermittlung unterhält.
2. Du möchtest herausfinden, wie das Protokoll zwischen Hardware und Server-Software aussieht, um im Endeffekt einen eigenen Software Server nachzubauen.
Was ist bisher bekannt?
1. Das Protokoll und der Datentransport über Socket
Das Protokoll besteht aus: 4 Byte Längenangabe + 13 Byte Daten
Das ist einfach so zu verstehen, dass 17 Byte Daten von deiner Hardware, in den Empfangsbuffer des Socket geschrieben werden.
cbRcv := Recv(ClientSocket, Buffer[cb], 32768, 0);
Weitere Vorgehensweise.
1. Du brauchst erstmals einen Server
2. Wie kann man nun auf die Längeninformationen die in den ersten 4 Byte des Header enthalten sind zugreifen.
3. Wie sind die restlichen 13 Byte Daten im Header aufgebaut, und wie kann man darauf zugreifen?
Also gehen wir dies mal der Reihe nach durch.
Punkt 1. Du brauchst erstmals einen Server. Wenn du gut in Socket
API Programmierung eingearbeitet bist, kein Problem für Dich.
Wenn nicht, verwende den Server den ich Dir upgeloaded habe, dort sind nur recv und send für Dich interessant (Debug Breakpont).
Grundzüge der Socket
API Programmierung sollten vorhanden sein, send, recv, select und Network Byte Order.
Socket
API desshalb, weil für die Datenanalyse (13 Byte und Handshake = send) die
API geeigneter ist, als eine Komponente.
Wenn Du genau die Internas einer Server-Komponente kennst, kannst Du natürlich auch diese verwenden.
Punkt 2. Wie kann man nun auf die Längeninformationen die in den ersten 4 Byte des Header enthalten sind zugreifen.
Da die Längeninformation in den ersten 4 Byte des Empfangsbuffers "Buffer" enthalten sind, einfach die ersten 4 Byte in eine
4 Byte Variable (integer) kopieren.
move(Buffer, IntegerVariable, SizeOf(Integer));
danach mit ntohl (
TCP/
IP network order to host byte order) in die Längeninfo umwandeln.
Auf Punkt 3. Wie sind die restlichen 13 Byte Daten im Header aufgebaut, und wie kann man darauf zugreifen?
möchte ich erst dann genauer eingehen, wenn du Punkt 1 + 2 (Server + Längeninformationen) hast.
lg. Astat