Crear SSLSocket por SSLSocketFactory con tiempo de espera de conexión establecido
Mi código está aquí:
SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, getAllCerts(), new SecureRandom()); SSLSocketFactory factory = sslContext.getSocketFactory(); mSocket = (SSLSocket) factory.createSocket("myhost.com", socketPort[index]);
Tengo que comprobar la tabla de puertos y elegir la abierta. Todo funciona bien, pero en createSocket () mi aplicación pierde mucho tiempo. Si tengo 5 puertos y el último está abierto conectando toma cerca de 3 minutos.
- Reenvío de puertos Android
- Java socket IOException - permiso denegado
- Acceso a WebView desde otra función en la clase MainActivity
- Implementación cliente / servidor de socket TCP de Android
- Envío de datos TCP desde Android (como cliente) - ¿no se envían datos?
¿Cómo puedo establecer el tiempo de espera en SSLSocketFactory para acelerar la conexión?
- ¿Hay algún mecanismo de devolución de llamada en android cuando hay datos disponibles para leer en socket
- Conexión entre Python Server y la aplicación Android
- Socket Android: java.net.SocketException: No hay ruta para alojar
- No obtiene respuesta en la conexión de socket
- Servicio de Android para sockets TCP
- La fuerza de aplicación se cierra al iniciar
- La mejor manera de implementar Socket.io en android
- Recibe UDP en Android Marshmallow
En caso de que todavía se esté preguntando, puede utilizar la idea que se ofrece en 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);
Trate de envolver un socket existente en su lugar:
Socket socketConn = new Socket(); socketConn.connect(addr, DEFAULT_CONNECT_TIMEOUT); mSocket = sc.getSocketFactory().createSocket(socketConn, hostname, port, true);