Как получить простое соединение Socket? - PullRequest
0 голосов
/ 03 февраля 2012

Я использую ServerSocket в своем java-приложении, и он будет прослушивать порт 1111. Когда клиент подключается к порту, каждое клиентское соединение будет выполняться в отдельном потоке.Каждое соединение будет получать данные за каждую 1 минуту, пока соединение не будет закрыто.

Вопрос в том, предположим, что если клиентское соединение не получает никаких данных в течение более 10 минут, какое-то событие должно быть запущено, и важно, чтобы соединение оставалось незамеченным.Чтобы я мог использовать это событие для отправки мне почтового оповещения.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 03 февраля 2012

Вы можете реализовать интерфейс Listener или Observer.Вот алгоритм.Создайте поток, например, ClientMonitor, который опрашивает флаг в клиентском объекте.Вы также можете использовать TimerTask для опроса флага / объекта через указанные промежутки времени

  1. Запуск нового TimerTask для мониторинга клиента
  2. Проверка, если клиентполучил какие-либо данные за последние десять минут.
  3. Если да, то сбросьте TimerTask.
  4. Если нет, тогда поднимите Exception, который позаботится о выполнении почтового оповещенияпока соединение с клиентом остается открытым.
  5. Сброс TimerTask
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...