С JavaDoc для setSoTimeoutДействительно ли java.net.Socket.setSoTimeout надежный?
Включение/выключение SO_TIMEOUT с заданного тайм-аута в миллисекундах. С этой опцией, установленной на ненулевой тайм-аут, вызов read() в InputStream, связанный с этим гнездом , будет блокировать только для этой суммы времени. Если истекает время ожидания, то java.net.SocketTimeoutException - , но Socket по-прежнему действителен. Опция должна быть активирована перед тем, как ввести операцию блокировки . Тайм-аут должен быть> 0. Тайм-аут нуля равен , интерпретируемому как бесконечный тайм-аут.
Из различных сообщений в Интернете я прочитал, что SO_TIMEOUT весьма ненадежна при использовании гнездо C API (например, here).
Следовательно, вопрос, можно ли использовать setSoTimeout
для проверки сеансов бегства?
Если нет, то какие техники вы можете порекомендовать установить ограничение времени на сеансы сокетов?
+1 - Связанный пост действительно очень смущен. В дополнение к таймауту в UDP ерунде, он, кажется, думает, что вы должны иметь возможность отправлять произвольно большие UDP-датаграммы. –