SSLSocket se bloquea en getInputStream cuando el dispositivo Android está en wifi

Quiero tener un servidor TCP encriptado SSL en el dispositivo Android y un cliente en la computadora que se conectará al dispositivo.

Creo un SSLServerSocket en el dispositivo Android con un almacén de claves propio.

final KeyStore localTrustStore = KeyStore.getInstance("BKS"); //NON-NLS
final InputStream in = context.getResources().openRawResource(R.raw.syncapp);
localTrustStore.load(in, "secret".toCharArray()); //Keystore pw
in.close();

final SSLContext sslContext = SSLContext.getInstance("TLSv1.2"); //NON-NLS

final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(localTrustStore);

final KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(localTrustStore, "secret".toCharArray()); //privat key pw

sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);

serverSocket = sslContext.getServerSocketFactory().createServerSocket(SERVER_PORT);
((SSLServerSocket) serverSocket).setNeedClientAuth(true);

Luego espero a que se conecte un cliente. Cuando un cliente quiere conectarse, se inicia un nuevo hilo y se demandan las secuencias:

final DataInputStream input = new DataInputStream(this.clientSocket.getInputStream());
final DataOutputStream output = new DataOutputStream(new BufferedOutputStream(clientSocket.getOutputStream()));

Primero usé este código con USB-Tethering para obtener una conexión entre la computadora y el dispositivo Android. Entonces no se habilitó Wifi / Red. Todo funcionó a la perfección.

Luego activé el wifi en el dispositivo Android y me conecté a un wlan sin internet. Pero ahora la llamada a getInputStream () parece tomar de 5 a 10 segundos. Si desactivo SSL funciona perfectamente. Si el wlan se conecta a internet, tampoco hay demora. Probé esto con Android 4.2 y 5.1. Actualización: ahora podría probar este problema con Android 6. Y el problema parece estar solucionado allí ...

El Apretón de manos se terminó correctamente, pero después de eso parece haber algún tipo de retraso en el dispositivo Android. (La llamada a getInputStream consume ese tiempo) Algunos desarrolladores dicen que hará una búsqueda inversa de DNS que tendrá un tiempo de espera excedido.

Eche un vistazo a la captura, la primera conexión se realizó mientras wifi estaba deshabilitado. La transferencia de datos tardó 0.3 segundos. Luego, simplemente activé el wifi, no me conecté a través del wifi, todavía se comunica a través del usb. Y tomó más de 5 segundos.

También encontré el problema aquí, pero están usando un socket de cliente. Necesito un socket de servidor. ¿Alguien tiene alguna idea de cómo solucionar este problema?

La conexión TLS con SSLSocket es lenta en el sistema operativo Android