Java socket API: Jak sprawdzić, czy połączenie zostało zamknięte?

Mam problemy z interfejsem API gniazda Java. Próbuję wyświetlić liczbę graczy aktualnie podłączonych do mojej gry. Łatwo jest określić, kiedy gracz się połączył. Wydaje się jednak, że niepotrzebnie trudno jest określić, kiedy gracz rozłączył się przy użyciu gniazda API.

PowołanieisConnected() na gnieździe, które zostało odłączone, zdaje się zawsze powracaćtrue. Podobnie dzwoniisClosed() na gnieździe, które zostało zamknięte zdalnie, zawsze wydaje się powracaćfalse. Przeczytałem, że aby faktycznie ustalić, czy gniazdo zostało zamknięte, dane muszą być zapisane w strumieniu wyjściowym i musi zostać przechwycony wyjątek. Wygląda to na bardzo nieczysty sposób radzenia sobie z tą sytuacją. Po prostu musielibyśmy stale wysyłać spam do wiadomości śmieciowej przez sieć, aby wiedzieć, kiedy gniazdo zostało zamknięte.

Czy jest jakieś inne rozwiązanie?

questionAnswers(7)

yourAnswerToTheQuestion