PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
Format PPL Socket-Message

Mit der Klasse ppl6::CpplSocketMessage und den Funktionen CpplSocket::Write und CpplSocket::WaitForMessage lassen sich bequem Nachrichten per TCP austauschen.

Jedes Nachrichtenpaket besteht dabei aus einem Header und den Nutzdaten.

Aufbau des Headers Version 1
Version 1 besteht aus einem 20 Byte langem Header mit folgendem Aufbau:
Byte 0: "V" (1 Byte)
Byte 1: Version=1 (1 Byte)
Byte 2: CommandId (2 Byte)
Byte 4: Id (4 Byte)
Byte 8: Bytes Nutzdaten (4 Byte)
Byte 12: Flags (1 Byte)
Bit 0: Zlib-Kompression
Bit 1: Client supports Zlib
Bit 2: Client supports MsgChannel
Byte 13: Datatype, PPL_ARRAY, usw. (1 Byte)
Byte 14: Zufallszahl (2 Byte)
Byte 16: CRC-Summe über den Header (4 Byte)

Die CRC-Summe wird über die ersten 16 Byte des Headers gebildet (siehe ppl6::crc32). Alle mehrbyteigen Werte müssen in Network-Byte-Order (Big Endian) angegeben werden.

Aufbau des Headers Version 2
Der Version 2-Header ist 4 Byte länger, die eine zusätzliche CRC-Summe über die Nutzdaten enthalten.
Byte 0: "V" (1 Byte)
Byte 1: Version=2 (1 Byte)
Byte 2: CommandId (2 Byte)
Byte 4: Id (4 Byte)
Byte 8: Bytes Nutzdaten (4 Byte)
Byte 12: Flags (1 Byte)
Bit 0: Zlib-Kompression
Bit 1: Client supports Zlib
Bit 2: Client supports MsgChannel
Byte 13: Datatype, PPL_ARRAY, usw. (1 Byte)
Byte 14: Zufallszahl (2 Byte)
Byte 16: CRC-Summe über die Nutzdaten (4 Byte)
Byte 20: CRC-Summe über den Header (4 Byte)
Die CRC-Summe des Headers wird über die ersten 20 Byte des Headers gebildet (siehe ppl6::crc32). Alle mehrbyteigen Werte müssen in Network-Byte-Order (Big Endian) angegeben werden.