Исключение времени ожидания простоя сокета в Java
По сути, я новичок в программировании сокетов. Я хотел бы знать о том, как закрыть сокет, если бездействует в течение указанного промежутка времени. Я искал в сети об этом, я нашел ту функцию, которая используется для закрытия сокета после указанного интервала. но здесь, в моем случае, я хотел бы закрыть сокет только тогда, когда он простаивает более указанного интервала
1 ответ
Я искал в сети об этом
Зачем? Javadoc существует. Поиск не требуется.
Я нашел ту функцию, которая используется для закрытия сокета после указанного интервала
Там нет такого метода.
Я видел о
setSoTimeOut(2000)
функция, которая закрывает сокет после указанного интервала времени
Нет, это не так. Он вообще не закрывает сокет и вызывает методы чтения SocketTimeoutException
если данные не поступают в течение периода ожидания.
но я хотел бы закрыть только если сокет остается бездействующим в течение указанного интервала
Socket.setSoTimeout()
это именно то, что вам нужно.
клиент устанавливает соединение с сервером, а затем спустя некоторое время он закрывает сокетное соединение на своей стороне после выполнения требуемой задачи и создает новое соединение в следующий раз, когда он пропингует, где мой сервер не закрывает соединение и он продолжает слушать этого клиента
Другими словами, ваш сервер игнорирует завершение потока в сокете. Не делай этого. Закройте сокет, если вы получили конец потока из метода чтения.