Тайм-аут подключения сокета 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();
так это обычное дело.