# IP-Server



## Felix (27. Feb 2006)

Hallo,

ich habe einen IP-Server programmiert, der einem die IPs aller anderen auch angemeldeten User und deren Usernamen übermittelt. Er läuft eigentlich auch ganz gut, aber wenn ein Cient beendet wird, ohne vorher den Befehl zum Abmelden zu senden, dann ist er weiterhin bei allen Usern als online sichtbar. Ich habe schon eine Methode eingebaut, die immer wenn sich jemand anmeldet oder abmeldet überprüft welche Clients noch alle erreichbar sind, aber diese läuft eben nur, wenn sich jemand an/abmeldet.

Desweiteren habe ich den Server gestern in einem Netzwerk mit 4 Clients getestet und der Server läft manchmal nicht ganz rund, dh er ist einmal abgestürzt und hat keine User mehr übermittelt. Deshalb wollte ich euch fragen, ob ihr mir einige Tipps geben könnt, wie ich den Server aufbauen kann, so dass er stabil läuft.

Zum Beispiel ist mir eine Idee gekommen, dass ich zu jedem Client ein Socket habe, dann müsste ich ja eigentlich durch eine Exception erfahren, wenn sich der User abmeldet. Aber verbraucht das dann nicht sehr viele Resourcen und macht das Netzwerk lahm?

Gruß
der Felix


----------



## byte (28. Feb 2006)

Schick in regelmäßigen Abständen eine Nachricht vom Server zu den Clients. Wenn der Client nicht in einer gewissen Zeit antwortet, erzeugt es ein Timeout und der Client wird aus der Liste entfernt. So erkennst Du, wenn sich ein Client fälschlicherweise nicht abmeldet.


----------



## Felix (28. Feb 2006)

ja, so hatte ich mir das auch überlegt, aber die idee mit dem socket hat mich eigentlich mehr überzeugt, wenn das so funktioniert, wie ich mir das überlegt habe. Wird eine Exception erzeugt, wenn der Rechner, zu dem eine Socket besteht offline geht? (ind der API konnte ich nichts finden...)


----------



## Dante_ugga (16. Mrz 2006)

Naja, man kann nichtmal mit timeouts oder pings sicher sein, das ein Client wirklich nicht da ist (evtl. gibts grad Netzwerkprobleme, oder der Client hat viel zu tun/ist langsam etc.). Wenn nur dein Socket stirbt ist das natürlich überhaupt kein guter Hinweis auf ein abhandenkommen eines Rechners (meist ist es das natürlich, es kommt also darauf an ob die Grenzfälle für deine Applikation problematisch sind oder nicht)


----------



## The_S (17. Mrz 2006)

Jup, wenn ich dich richtig verstanden habe (dann meinst du nämlich genau so, wie ich es bei mir realisiert habe) funktioniert das.


----------

