Seite 1 von 1

StreamServer (TCP)

Verfasst: 02.02.2008 20:09
von mk-soft
hi,

hatte mal wieder eine Idee.

Hier nun ein StreamServer der die gemeinsamen Daten von allen angemeldeten Clients als Stream getriggert sendet. Die Basic ist der Code MyServer für MultiUserServer von mir.

Die Streamdaten werden in der Struktur udtData definiert. Die Daten selber liegen dann in der LinkedList "User()" mit der Struktur "udtManager".
Jeder angemeldete Client erhält eine eindeutige (nicht feste) Ident und wird im Stream mitgesendet.

Alle Daten werden als Blockdaten mit Dynamischer länge gesendet und empfangen.

Jeder Block fängt mit ein Header an um die Daten zu klassifisieren. Dieser besteht aus vier Wörter und hat folgenden aufbau
- Wort 1: Ident - Serverkennung
- Wort 2: Version - Serverversion
- Wort 3: Command - Befehl und Art der Daten. z.B. #cmd_login, #cmd_setdata vom Client oder #cmd_stream vom Server
- Wort 4: Size: Länge der angehängten Daten in Bytes

Jeder neue Client der sich anmeldet vergrößert mit seinen Daten den Stream. Somit gibt es natürlich auch eine Grenze von den Traffic. Wo dieser liegt habe ich noch nicht getestet.

Berechnung der Größe des Datastream:
- Size = SizeOf(udtHeader) + (SizeOf(udtData) * Connected_Clients)

Berechung des Traffic auf dem Netzwerk pro Sekunde
- Traffic = 1000/trigger * Size * Connected_Client

Download Code StreamServer

P.S. Etwas den Code aufgeräumt. Kann man vieleicht als GameServer erweitern.

FF :wink:

Verfasst: 03.02.2008 14:58
von mk-soft
Update v1.01 :wink:

[Edit] Opps - Habe vergessen die Serverversion im TestClient anzupassen. Kommte #cmd_error und der Server hatte automatisch die Verbindung getrennt.
:oops:

[Bugfix v1.01 Ref 2] SendStream: Fehlte Prüfung auf gültige Ident die erst nach der Anmeldung zugeteilt wird.