IP-Server

Status
Nicht offen für weitere Antworten.

Felix

Bekanntes Mitglied
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

Top Contributor
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

Bekanntes Mitglied
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...)
 
D

Dante_ugga

Gast
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

Top Contributor
Jup, wenn ich dich richtig verstanden habe (dann meinst du nämlich genau so, wie ich es bei mir realisiert habe) funktioniert das.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben