# disconnect bei server erkennen



## OBI (14. Okt 2007)

Hallo zusammen,

ich habe mich jetzt auch mal an java ran gewagt und habe zu aller erst mal einen chat mit mehreren personen erstellt. dieser läuft auch wunderbar also das connecten und das chatten so jetzt kommt ich aber auch schon zu meinem problem und zwar wenn jetzt sagen wir ein client die verbindung kappt und das nich absichtlich per klick auf nen chat beenden button sondern wenn sagen wir das netzwerk kabel gezogen wird oder die verbindung sonst ein problem hat, wie kann der server dann feststellen, das der client nicht mehr da ist?

im moment ist es so, das die systemauslastung beim server hoch geht wenn der client weg ist und das wars. dieses möchte ich aber unterbinden und so regelmäßig checken ob der client noch da is damit wenn dieser nicht mehr da ist eine meldung erscheinen kann "der client ist weg" und die verbindungen und der socket geschlossen werden kann.

ich habe mir jetzt ein keepalive system überlegt in dem der server immer eine botschaft an den client schickt und wenn die nich ankommt muss der server weg sein und umgekehrt das gleiche. leider funktioniert das nicht so wirklich gut da es dann schon zu problemen kommt wenn ein packet zu spät verschickt wird etc. außerdem ist dieses verfahren sehr kompliziert.

so nun nochmal meine frage in kurzform: ist es möglich, dass der server bzw. auch der client überprüft ob wirklich noch eine verbindung zum jeweils anderen besteht?


danke schonmal für eure hilfe

mfg

obi


----------



## Angel4585 (14. Okt 2007)

arbeitest du mit Sockets? SocketChannels? RMI?


----------



## OBI (14. Okt 2007)

Sockets


----------



## Angel4585 (14. Okt 2007)

gibts da keine "isConnected" Methode oder so?


----------



## Murray (14. Okt 2007)

Normalerweise sollte beim Server die CPU-Last nicht ansteigen, wenn ein Client nicht mehr da ist - vielleicht solltest du da erstmal ansetzen.


----------



## OBI (14. Okt 2007)

hmh ja das hat mich auch schon immer gewundert aber ich hab den fehler nie entdeckt weil naja so firm bin ich nich in java bzw ich hab grad erst angefangen es zu lernen und hab das mit der hohen cpu auslastung darauf geschoben das wenn ein client weg is mein server immer noch probiert was nachrichten von dem clienten zu empfangen aber dazu kommt es ja nich und deshalb die hohe cpu auslastung aber gut das kann ja iwie auch nich stimmen aber wie gesacht den fehler find ich nich ich war nur erstmal glücklich das ich überhaupt nen chat mit mehreren usern zustande bekommen hab...

also wenn einer mal ganz viel langeweile hat könnte sich ja einer den code mal näher anschaun... allerdings is das mittlerweile auch nich mehr so wenig...


----------



## Guest (26. Okt 2007)

bin auch neu in der java-programmierung, hatte auch das problem, dass ich nicht erkennen konnte ob ein client disconnected ist, server hing dann in der schleife fest... was für inputs/outputs benutzt du? ich benutze einen bufferedreader als inputstreamreader, und frage den dann in der schleife ab ob der empfangene string per bufferedreader.readline()  != null ist... wenn nicht hatte sich der client disconnected (weiß allerdings nicht ob das so konform ist, wie gesagt auch neu in der java-programmierung ;-) ) und kann dann dementsprechend reagieren...

mfg prunkster


----------

