¿Cuál es el tiempo de espera predeterminado de java.net.Socket en android?
Estoy desarrollando una aplicación móvil para Android. Allí, he creado socket y transferencia de datos entre móviles android y aplicaciones de Windows (que se ejecuta en pc, portátil). Estoy usando android 2.3
Prueba móvil samsung galaxy pop
El PC y los móviles están conectados vía tithering del USB.
La transferencia de datos correctamente.
Pero un problema está en el medio de la aplicación el tithering cancelado por desenchufar el capelo usb móvil del sistema, entonces i lanza excepción.
- Conexión de dos teléfonos Android para transferir datos entre ellos a través de WIFI
- Mensajes de error NetlinkListener y NetlinkEvent
- ¿Cómo asociar la intención de conectividad a socket?
- ¿Cómo puede mi aplicación Android comunicarse con un daemon nativo?
- Enviar datos a través de wifi (no internet) cuando los datos móviles
Pero algunas veces no a través de ninguna excepción simplemente espera, Socket también no cerrado espera datos para lectura
Por lo tanto, envíe el tiempo predeterminado socket time out en android
Mis códigos de muestra se dan a continuación
Socket socket=null; DataOutputStream dos=null; OutputStream os=null; InputStream is=null; DataInputStream dis=null; try { Log.i(tagName, "b4 creating socket"); socket=new Socket(this.getIpAddress(),this.getPort_number()); is=socket.getInputStream(); dos=new DataOutputStream(os); dis=new DataInputStream(is); } catch(UnknownHostException unknown_ex) { Log.i(tagName, "Exception host unknown : "+unknown_ex.toString()); unknown_ex.printStackTrace(); } catch(IOException ioe_ex) { Log.i(tagName, "ioe Exception : "+ioe_ex.toString()); ioe_ex.printStackTrace(); } catch(Exception ex) { Log.i(tagName, "Exception : "+ex.toString()); ex.printStackTrace(); } if(dos!=null) { try { dos.close(); } catch(Exception ex) { } } if(dis!=null) { try { dis.close(); } catch(Exception ex){} } if(socket!=null) { try { socket.close(); } catch(Exception ex) { } } socket=null;dos=null;dis=null; Log.i(tagName, "MySocketConnection.connectMe() - end");
Cuando uso el código
Socket.getSoTimeout()
Entonces devuelve 0.
Por favor todos son dar sus ideas.
- ¿Hay algún mecanismo de devolución de llamada en android cuando hay datos disponibles para leer en socket
- Conexión HTTP de Android
- ¿Cómo puedo cerrar BluetoothSocket en la rotación de la pantalla en Android?
- Comunicación de LocalSocket con el dominio de Unix en Android NDK
- HTTP Vs sockets Vanilla para cargar archivos binarios grandes (50-200 MB) desde un dispositivo Android a través de una red Wi-Fi de un solo salto
- Java socket IOException - permiso denegado
- Socket Android excepción "socket está cerrado"
- Socket Android: java.net.SocketException: No hay ruta para alojar
El tiempo de espera de lectura de socket predeterminado es infinito, como se dice en el Javadoc , "Un tiempo de espera de cero se interpreta como un tiempo de espera infinito". Si desea un valor finito, llame a Socket.setSoTimeout().
No sé el tiempo de espera por defecto use this.socket.setSoTimeout(5000);
Pero puede intentar establecer un valor de tiempo de espera más alto. Aquí 5000 milisegundos significa 5 segundos. Espero que esto solucione su problema.