Клиентские сокеты по протоколу TCP/IP в Java

Клиентские сокеты по протоколу TCP/IP в JavaСокеты по протоколу ТСР/IP служат для реализации надежных двунаправленных, постоянных, двухточечных, потоковых соединений между хостами в Интернете.

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

В Java поддерживаются две разновидности сокетов по протоколу ТСР /IP: один — для серверов, другой — для клиентов.

Класс ServerSocket служит «приемником», ожидая подключения клиентов прежде, чем предпринять какие-нибудь действия. Иными словами, класс ServerSocket предназначен для серверов, тогда как класс Socket — для клиентов. Читать

Прерываемые сокеты Java

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

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

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

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

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