Hallo,
vielen dank für den Link, 601Markus.
Wenn man den Ping-Mechanismus folgendermaßen implementiert, sollte eigentlich nicht mehr Traffic entstehen, als durch unnötiges yellen

:
1. Das Pingen ist Standardmässig abgestellt, kann aber von Jedem (evtl. nur Clientbenutzern??) aktiviert werden.
2. Wenn der Ping-Mechanismus aktiviert ist, pingt er nicht andauernd, vielmehr überprüft der Hintegrund-Thread, wann zum letzten Mal Daten vom Server kamen. Liegt dies mehr als x Sekunden zurück, dann wird gepingt.
3. Daneben sollte der Thread überprüfen, ob überhaupt noch eine Verbindung zum Server besteht (Könnte ja sein, dass der Server zwar jetzt erreichbar ist, aber die Verbindung vorher bereits unterbrochen wurde).
4. Wenn keine Verbindung mehr besteht, bzw. der Server nicht reagiert, wird eine neue Verbindung hergestellt, wobei der Benutzer am Besten wieder da landet, wo er vorher war.
Das ganze läßt sich natürlich auch ähnlich auf der Serverseite implementieren:
Ich nehme dazu mal an, dass jeder Benutzer seinen eigenen Server-Thread bekommt:
1. Der Server-Thread speichert die Ankunftszeit des letzten Packetes seines Clients, und pingt diesen an, falls x Sekunden vergangen sind.
2. Kommt nach Y Sekunden keine Antwort, bezw. besteht keine Verbindung mehr mit dem Client, so wird der Spieler aus der BSW entfernt, und der Server-Thread beendet. (Hier muss man, je nachdem wie Puppets implementiert sind, noch darauf achten, ob Spieler oder Puppet)
Sollte nicht jeder Spieler seinen eigenen Server-Thread bekommen, dann muss man eben eine Liste anlegen (bzw. eine evtl. Vorhandene Benutzerliste ergänzen), in der jedem Benutzer die Zeit zugeordnet wird, wann zum letzten Mal ein Packet von ihm ankam.
Das ist jetzt zwar etwas aufwändig, spart aber eine Menge Traffic.
Mahjong