Java.Net.SocketTimeoutException: conexión agotada
- Enchufes en Java
- Tiempos de espera en Java
-
Causas de
java.net.SocketTimeoutException: conexión agotada
en Java -
Solución a
java.net.SocketTimeoutException: Conexión agotada
en Java
En el artículo de hoy, hablaremos de java.net.SocketTimeoutException: conexión agotada
. Pero primero, echemos un vistazo más de cerca a los conceptos de sockets y tiempos de espera.
Enchufes en Java
Un enlace lógico entre dos aplicaciones informáticas puede tener múltiples puntos finales, uno de los cuales es un socket.
En otras palabras, es una interfaz lógica que utilizan las aplicaciones para transmitir y recibir datos a través de una red. Una dirección IP y un número de puerto comprenden un socket en su forma más básica.
Se asigna un número de puerto único a cada socket, que se utiliza para identificar el servicio. Los servicios basados en conexión usan sockets de flujo que se basan en TCP.
Debido a esto, Java ofrece la clase java.net.Socket
como una opción de programación del lado del cliente.
Por otro lado, la clase java.net.ServerSocket
se utiliza en la programación TCP/IP del lado del servidor. El socket de datagrama basado en UDP es otro tipo de socket, y es el que se emplea para servicios sin conexión.
Java admite java.net.DatagramSocket
para operaciones UDP.
Tiempos de espera en Java
Se crea una instancia de un objeto socket
cuando se llama al constructor socket
, lo que permite una conexión entre el cliente y el servidor desde el lado del cliente.
Como entrada, el constructor espera recibir la dirección del host remoto y el número de puerto. Después de eso, intenta usar los parámetros proporcionados para establecer una conexión con el host remoto.
La operación evitará que continúen otros procesos hasta que se cree una conexión exitosa. Pero, la aplicación arrojará el siguiente error si la conexión no se realiza correctamente después de un tiempo específico.
java.net.SocketTimeoutException : Connection timed out
Al escuchar las solicitudes de conexión entrantes, la clase ServerSocket
en el lado del servidor está permanentemente activa. Cuando ServerSocket
recibe una solicitud de conexión, se invoca la función aceptar
para crear un nuevo objeto socket
.
Similar al método anterior, este bloquea hasta que se conecta el cliente remoto.
Causas de java.net.SocketTimeoutException: conexión agotada
en Java
Las siguientes son algunas posibles razones del error.
- El servidor está funcionando bien. Sin embargo, el valor de
tiempo de espera
se establece para un tiempo más corto. Por lo tanto, aumente el valor deltimeout
. - En el host remoto, ningún servicio está escuchando el puerto especificado.
- No se envía ninguna ruta al host remoto.
- El host remoto no parece permitir ninguna conexión.
- Hay un problema para comunicarse con el host remoto.
- La conexión a Internet es lenta o no está disponible.
Solución a java.net.SocketTimeoutException: Conexión agotada
en Java
Podemos preestablecer la opción de tiempo de espera
para las actividades del cliente y del servidor. Agregar las construcciones try
y catch
sería una solución adecuada.
-
Del lado del cliente, lo primero que haremos será construir un
socket
nulo. Después de eso, usaremos el métodoconnect()
y luego configuraremos el parámetrotimeout
donde el tiempo de espera debe ser mayor a 0 milisegundos.Si el tiempo de espera expira antes de que la función regrese, se lanza
SocketTimeoutException
.Socket s = new Socket(); SocketAddress sAdres = new InetSocketAddress(host, port); s.connect(sAdres, 50000);
-
Si desea establecer un valor de
tiempo de espera
desde el lado del servidor, puede usar la funciónsetSoTimeout()
. El valor del parámetrotimeout
determina el tiempo que se bloqueará la funciónServerSocket.accept()
.ServerSocket servers = new new ServerSocket(port); servers.setSoTimeout(10000);
Del mismo modo, el
tiempo de espera
debe ser superior a 0 milisegundos. Si eltiempo de espera
expira antes de que el método regrese, el método generará unaSocketTimeoutException
. -
Determinar un tiempo de espera de conexión y luego manejarlo usando un bloque
try-catch
es otra técnica excelente para lidiar conHttpException
.HttpUrlConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(8000);
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedInArtículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase