Тайм-аут подключения сокета SSL

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

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

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

2 ответов


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

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

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


С 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();

так это обычное дело.