Создать SSLSocket с помощью SSLSocketFactory с установленным временем ожидания подключения - PullRequest
8 голосов
/ 31 августа 2011

Мой код здесь:

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, getAllCerts(), new SecureRandom());
SSLSocketFactory factory = sslContext.getSocketFactory();
mSocket = (SSLSocket) factory.createSocket("myhost.com", socketPort[index]);

Я должен проверить таблицу портов и выбрать открытый.Все работает нормально, но на createSocket () мое приложение теряет много времени.Если у меня 5 портов, а последний открыт, подключение занимает около 3 минут.

Как настроить тайм-аут на SSLSocketFactory для ускорения соединения?

Ответы [ 2 ]

9 голосов
/ 07 марта 2014

Если вам все еще интересно, вы можете использовать идею, приведенную в https://groups.google.com/forum/#!topic/android-developers/EYtMO5WoXXI

import javax.net.ssl.SSLSocketFactory;

// Create a socket without connecting
SSLSocketFactory socketFactory = SSLSocketFactory.getDefault();
Socket socket = socketFactory.createSocket();

// Connect, with an explicit timeout value
socket.connect(new InetSocketAddress(endpoint.mServer,
endpoint.mPort), CONNECT_TIMEOUT);
2 голосов
/ 03 апреля 2012

Попробуйте вместо этого обернуть существующий сокет:

Socket socketConn = new Socket();
socketConn.connect(addr, DEFAULT_CONNECT_TIMEOUT);
mSocket = socketConn.getSocketFactory().createSocket(socketConn, hostname, port, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...