Я стикаюся з деякими проблемами з API сокета Java. Я намагаюся відобразити кількість гравців, які зараз підключені до моєї гри. Неважко визначити, коли гравець підключився. Однак видається надмірно важким визначити, коли програвач відключився за допомогою API сокета.
isConnected()
Здається, дзвінок до розетки, яка була відключена віддалено, завжди повертається true
. Подібним чином, isClosed()
здається, повернення до розетки, яка була закрита віддалено, завжди повертається false
. Я читав, що для того, щоб насправді визначити, чи закрито сокет, дані повинні бути записані у вихідний потік і вилучити виняток. Це здається справді нечистим способом вирішення цієї ситуації. Нам би просто постійно доводилося розсилати по мережі повідомлення про сміття, щоб коли-небудь дізнатися, коли сокет закрився.
Чи є якесь інше рішення?