Исключение времени ожидания простоя сокета в Java

По сути, я новичок в программировании сокетов. Я хотел бы знать о том, как закрыть сокет, если бездействует в течение указанного промежутка времени. Я искал в сети об этом, я нашел ту функцию, которая используется для закрытия сокета после указанного интервала. но здесь, в моем случае, я хотел бы закрыть сокет только тогда, когда он простаивает более указанного интервала

1 ответ

Решение

Я искал в сети об этом

Зачем? Javadoc существует. Поиск не требуется.

Я нашел ту функцию, которая используется для закрытия сокета после указанного интервала

Там нет такого метода.

Я видел о setSoTimeOut(2000) функция, которая закрывает сокет после указанного интервала времени

Нет, это не так. Он вообще не закрывает сокет и вызывает методы чтения SocketTimeoutException если данные не поступают в течение периода ожидания.

но я хотел бы закрыть только если сокет остается бездействующим в течение указанного интервала

Socket.setSoTimeout() это именно то, что вам нужно.

клиент устанавливает соединение с сервером, а затем спустя некоторое время он закрывает сокетное соединение на своей стороне после выполнения требуемой задачи и создает новое соединение в следующий раз, когда он пропингует, где мой сервер не закрывает соединение и он продолжает слушать этого клиента

Другими словами, ваш сервер игнорирует завершение потока в сокете. Не делай этого. Закройте сокет, если вы получили конец потока из метода чтения.

Другие вопросы по тегам