Я пытаюсь изучить Socket самостоятельно. Я немного смущен, следуя тексту с сайта Oracle. У меня есть некоторые вопросы по этому поводу. Заранее благодарим за любое ясное объяснение.
setSoTimeout
public void setSoTimeout (int timeout) выбрасывает SocketException
Включить/отключить SO_TIMEOUT с указанным таймаутом в миллисекундах. Если этот параметр установлен на ненулевой тайм-аут, вызов
read()
наInputStream
, связанный с этим Socket, будет блокироваться только на это количество времени. Если истечение тайм-аута истекает, появляется ajava.net.SocketTimeoutException
, хотя Socket все еще действителен. Опция должна быть активирована до того, как будет введена операция блокировки. Тайм-аут должен быть > 0. Тайм-аут нуля интерпретируется как бесконечный тайм-аут.
- Что такое SO_TIMEOUT?
-
Socket - это конечная точка соединения. Если я скажу
mySocket.setSoTimeout(2000);
Означает ли это, что я блокирую чтение любого ввода с сервера/клиента для этого сокета за 2000 миллисекунд, и после этого сокет готов к чтению данных?
-
Что означает истечение срока ожидания?
-
Какая опция должна быть активирована до блокировки?
-
Бесконечный таймаут означает, что сокет больше не читается?