Тайм-аут сокетов Java

Тайм-аут сокетов JavaЧтение из блоков сокетов доступно до тех пор, пока данные являются доступными. Если хост является недосягаемым, ваше приложение будет ожидать в течение длительного периода времени, и все будет зависеть от того, когда операционная система, под управлением которой работает компьютер, определит момент завершения ожидания.

Вы можете решить, какое значение тайм-аута будет разумным для вашего определенного приложения. Затем вызовите метод setSoTimeout, чтобы задать значение тайм-аута(в миллисекундах).

Если значение тайм-аута было задано для сокета, то все последующие операции чтения и записи будут генерировать исключение SocketTimeoutException В момент наступления тайм-аута, прежде чем операция завершит свою работу. Вы можете перехватить исключение и отреагировать на тайм-аут.

Вам придется решить еще одну дополнительную проблему, связанную с тайм-аутами. Конструктор:

может удерживать блокировку в течение неопределенного периода времени до тех пор, пока не будет установлено исходное соединение с хостом.

Эту проблему можно преодолеть, если сначала создать несоединенный сокет, а затем соединиться с ним во время тайм-аута: