Ich habe einige Probleme mit der Java-Socket-API. Ich versuche, die Anzahl der Spieler anzuzeigen, die derzeit mit meinem Spiel verbunden sind. Es ist leicht festzustellen, wann ein Spieler eine Verbindung hergestellt hat. Es scheint jedoch unnötig schwierig zu sein, festzustellen, wann ein Spieler mithilfe der Socket-API die Verbindung getrennt hat.
Das Anrufen isConnected()
eines Sockets, der aus der Ferne getrennt wurde, scheint immer zurückzukehren true
. Ebenso isClosed()
scheint das Aufrufen eines Sockets, der remote geschlossen wurde, immer zurückzukehren false
. Ich habe gelesen, dass, um tatsächlich festzustellen, ob ein Socket geschlossen wurde oder nicht, Daten in den Ausgabestream geschrieben und eine Ausnahme abgefangen werden muss. Dies scheint ein wirklich unreiner Weg zu sein, um mit dieser Situation umzugehen. Wir müssten nur ständig eine Müllnachricht über das Netzwerk spammen, um jemals zu erfahren, wann ein Socket geschlossen wurde.
Gibt es eine andere Lösung?