Error java.net.ConnectException en Java
Este tutorial demuestra el error java.net.ConnectException
en Java.
el error java.net.ConnectException
en Java
La excepción java.net.ConnectException
es la excepción más común al trabajar con redes. Ocurre principalmente cuando se realiza una conexión TCP entre el cliente, la aplicación y el servidor.
Es una aplicación comprobada que se puede manejar en el código usando los bloques try-catch. Esta excepción es una subclase de la excepción IO.
Aquí está la jerarquía de esta excepción:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.io.IOException
java.net.SocketException
java.net.ConnectException
Estas son las posibles razones de esta excepción:
- Cuando un cliente y un servidor no están en la misma red, ambos deben estar en la red como Internet o LAN; de lo contrario, lanzará la
ConnectException
. - Cuando el servidor no se está ejecutando. Por lo general, los puertos como 3306 (MySQL), 8080 (para Tomcat), 27017 (MongoDB) y 3000 o 4200 (para React/Angular) están completamente inactivos u ocupados por alguna otra entidad, y arrojará la
ConnectException
. - Cuando la seguridad está impidiendo la comunicación, por ejemplo, en el caso de un Firewall. En este caso, lanzará la
ConnectException
. - Cuando se anula la configuración, es posible que el servidor se esté ejecutando pero que esté listado en los puertos, arrojará la
ConnectException
. - Cuando la cadena de conexión no es correcta, por ejemplo,
Connection DemoConnection = DriverManager.getConnection(
jdbc:mysql://localhost/:3306? +
user=&password= );
. Lanzará laConnectException
. - Cuando se da por error un número de puerto incorrecto, lanzará la
ConnectException
.
Probemos un ejemplo para ConnectException
:
package delftstack;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;
public class Example {
public static void main(String[] args) throws IOException {
String Host_Name = "127.0.0.1";
int Port_Number = 808;
Socket New_Socket = new Socket(Host_Name, Port_Number);
InputStream Input_Stream = New_Socket.getInputStream();
InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
int Demo_Data;
StringBuilder Output_String = new StringBuilder();
while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
Output_String.append((char) Demo_Data);
}
}
}
El código anterior arrojará la ConnectException
porque el puerto y la IP no son válidos. Ver salida:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:579)
at java.base/sun.nio.ch.Net.connect(Net.java:568)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
at java.base/java.net.Socket.connect(Socket.java:633)
at java.base/java.net.Socket.connect(Socket.java:583)
at java.base/java.net.Socket.<init>(Socket.java:507)
at java.base/java.net.Socket.<init>(Socket.java:287)
at delftstack.Example.main(Example.java:16)
Ahora, podemos manejar la excepción usando los bloques try-catch
. Como se trata de una excepción comprobada, es necesario añadir lanzamientos
al método.
Veamos la solución:
package delftstack;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;
public class Example {
public static void main(String[] args) throws IOException {
String Host_Name = "127.0.0.1";
int Port_Number = 808;
try (Socket New_Socket = new Socket(Host_Name, Port_Number)) {
InputStream Input_Stream = New_Socket.getInputStream();
InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
int Demo_Data;
StringBuilder Output_String = new StringBuilder();
while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
Output_String.append((char) Demo_Data);
}
}
catch (ConnectException ex) {
System.out.println(
"The Connect Exception occured becuase the given hostname and port are invalid : "
+ ex.getMessage());
}
}
}
Ahora se maneja la excepción, por lo que no bloqueará el código. Ver salida:
The Connect Exception occured becuase the given hostname and port are invalid : Connection refused: connect
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookArtí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