Тайм-аут подключения SSL Socket - PullRequest
6 голосов
/ 19 апреля 2011

Как настроить время ожидания подключения для сокетов SSL в Java?

Для простых сокетов я могу просто создать новый экземпляр сокета без какой-либо целевой конечной точки, используя new Socket(), а затем вызвать connect (SocketAddressконечная точка, int timeout) метод.С сокетами SSL я не могу создать new SSLSocket() и SSLSocketFactory.getDefault().createSocket() метод без бросков конечной точки UnsupportedOperationException с Несвязанные сокеты не реализованы сообщение.

Есть ли способ использовать тайм-ауты подключения дляСокеты SSL в Java, используя только стандартные java-библиотеки?

Ответы [ 2 ]

6 голосов
/ 19 апреля 2011

Полагаю, вы могли бы использовать свой текущий подход для создания Socket и последующего его подключения. Чтобы установить SSL через соединение, вы можете использовать SSLSocketFactory.createSocket

Возвращает сокет, наложенный поверх существующий сокет подключен к названному хост, в данном порту.

Таким образом, вы получаете полный контроль над соединением и , а затем вы устанавливаете SSL поверх него. Пожалуйста, дайте мне знать, если я неправильно прочитал ваш вопрос.

3 голосов
/ 08 сентября 2014

С java 1.7 следующее не выдает исключение, указанное в вопросе:

String host = "example.com";
int port = 12345;
int connectTimeout = 5000;
SSLSocket socket = (SSLSocket)SSLSocketFactory.getDefault().createSocket();
socket.connect(new InetSocketAddress(host, port), connectTimeout);
socket.startHandshake();

, так что все как обычно.

...