Added protocoll specs

This commit is contained in:
senft-lap 2012-11-07 11:53:14 +01:00
parent 950d729b3b
commit 04f3e33718

View File

@ -0,0 +1,51 @@
Client Server
1. push,length ----------------->
2. <---------------- buffer size, DATA_ID
3. chunks ----------------->
------------------------------------------------
| MESSAGE_TYPE | SESSION_ID | CHUNK_ID | DATA |
------------------------------------------------
MESSAGE_TYPE (1 byte) = 0 (push)
1 (data)
2 (pop)
3 (print)
SESSION_ID = Große Daten kommen in mehrere Packeten an. Damit der Server weiß, zu
welchem "Datensatz" (Session) ein Packet, gehört, gibt er jeder "Session" eine
eindeutige ID (SESSION_ID).
CHUNK_ID = Die aufgeteilten Daten müssen nicht unbedingt in der richtigen
Reihenfolge beim Server ankommen, deshalb nummeriert der Client die "Chunks".
DATA = Die eigentlichen Daten.
Beispiel:
- Server hat eine Buffersize von 5 (heißt wir können 2 Zeichen in einen
Chunk packen, weil 3 Bytes für Metadaten (MESSAGE_TYPE, SESSION_ID,
CHUNK_ID draufgehen)
- Client will "hase" pushen
Client Server
1. --------------- Client meldet an, dass er etwas pushen möchte.
| 0 | 4 | - | - | -----------> Er teilt dem Server auch mit wie lang die
--------------- Nachricht ist, damit dieser schon Platz für die
Chunks reservieren kann.
2. ------------------ Server gibt Client seine buffersize (5) und einen
<----------- | 1 | 2, 0 | - | - | eindeutigen Identifier für die Daten (0)
------------------
3. ---------------- Client teilt seine Daten auf und schickt das erste
| 2 | 0 | 0 | ha | -----------> Datenpacket, SESSION_ID = 0 (vom Server vergeben),
---------------- CHUNK_ID = 0 (erster Teil der Daten)
4. ---------------- Client schickt das zweite Datenpacket
| 2 | 0 | 1 | se | -----------> SESSION_ID = 0, CHUNK_ID = 1
----------------
Der Server muss dann halt zusehen, dass er die Packet richtig zusammenbaut.
Dazu hält er alle (bisher) unvollständigen Packete zunächst in einer seperaten
List und packt diese erst auf den eigentlichen Stack, wenn alle Chunks da sind.