Cómo arreglar java.net.ConnectException: Conexión rechazada: ¿conectar en Java?

java.net.ConnectException: Conexión rechazada: la conexión es el tipo más frecuente de excepción de red que ocurre en Java siempre que el software esté en una arquitectura cliente-servidor e intente establecer una conexión TCP desde el cliente al servidor. Necesitamos manejar la excepción con cuidado para resolver el problema de comunicación. Primero, veamos las posibles razones de la ocurrencia de java.net.ConnectException: Conexión rechazada.

  1. Como cliente y servidor involucrados, ambos deben estar en una red como LAN o Internet. Si no está presente, lanzará una excepción en el lado del cliente.
  2. Si el servidor no se está ejecutando. Por lo general, puertos como 8080 (para tomcat), 3000 o 4200 (para react/angular), 3306 (MySQL), 27017 (MongoDB) u ocupados por otros agentes o totalmente inactivos, es decir, la instancia no se inició.
  3. A veces, un servidor puede estar ejecutándose pero no escuchando en el puerto debido a algunas configuraciones anuladas, etc.
  4. Por lo general, por razones de seguridad, el Firewall estará allí, y si no permite la comunicación.
  5. Por error, se menciona el puerto incorrecto en el puerto o se proporciona el número de generación de puerto aleatorio.
  6. La información de la string de conexión es incorrecta. Por ejemplo:

Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost/:3306<dbname>?” + “user=<username>&password=<password>”);

Implementación: aquí estamos utilizando la conectividad de la base de datos MySQL y la información de conexión debe tener este formato. Ahora veamos las formas de arreglar las formas de java.net.ConnectException: Conexión rechazada. Haga ping al host de destino usando los comandos como se muestra a continuación:

ping <hostname> - to test

ipconfig(for windows)/ifconfig(linux) - to get network configuration

netstat - statistical report

nslookup - DNS lookup name

Hay herramientas como “Putty” disponibles para comunicarse, y es una implementación gratuita de Telnet y SSH para Windows y Unix.

Ejemplo 1: 

Java

// Java Program to Illustrate Creation of ConnectException
 
// Importing required classes
import java.io;
import java.net.*;
import java.util.*;
 
// Main class
// To test hostname and port connectivity
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Hostname is defined so do have arbitrary
        // localhost value which is nothing but 127.0.0.1
        String hostname = "127.0.0.1";
 
        // PORT is defined here
        // It should have been 8080 or 8000 but cannot be 80
 
        // If IP and PORT is invalid it will get exception
        // Trying to connect
        int port = 80;
 
        // Try block to check for exceptions
        try (Socket socket = new Socket(hostname, port)) {
 
            // InputStream to read data from socket
            InputStream inputStream
                = socket.getInputStream();
            InputStreamReader inputStreamReader
                = new InputStreamReader(inputStream);
 
            int data;
 
            StringBuilder outputString
                = new StringBuilder();
 
            // Data read from input stream
            while ((data = inputStreamReader.read())
                   != -1) {
                outputString.append((char)data);
            }
        }
 
        // Catch block to handle the exceptions
        catch (IOException ex) {
 
            // If the given hostname and port number are
            // invalid, connectivity cannot be established
            // and hence error thrown Exception will happen
            // when socket will not reachable
            System.out.println(
                "Connection Refused Exception as the given hostname and port are invalid : "
                + ex.getMessage());
        }
    }
}

Producción:

Ejemplo 2: Comprobación de conectividad de MySQL

Java

// Java Program to Demonstrate DB Connection Setup
 
// Importing basic libraries
import java.io.*;
import java.util.*;
 
// Step 1: Importing DB
import java.sql.*;
 
// Try block to check for exceptions
try {
 
    // Setting initial connection object to null
    Connection con = null;
 
    String driver = "com.mysql.jdbc.Driver";
 
    // Step 2: Loading and registering drivers
 
    // Here if IP address is not your localhost,
    // need to specify that or specific address
    String IPADDRESS = "localhost"
 
        // 3306 is port number
        String url1
        = "jdbc:mysql://IPADDRESS:3306/";
 
    // If not suggesting that to assign generally is
    // followed as DB = mySQL username= root, password=1234
    String db = "<your dbname>";
    String dbUser = "<username>";
    String dbPasswd = "<password>";
 
    // Loading driver using forName() method
    Class.forName(driver).newInstance();
    // Registering driver using DriverManager
    con = DriverManager.getConnection(url1 + db, dbUser,
                                      dbPasswd);
 
    // Display message on the console
    // when the connection is successfully setup
    System.out.println("Database Connection Established");
}
 
// Catch block to handle the exceptions
catch (IOException ex) {
 
    // Exception will happen when the IPAddress and port
    // number are mismatch By pinging, we can correct that
 
    // Display message on the console and
    // getting exception message using getMessage() method
    System.out.println(
        "Connection Refused Exception as the given hostname and port are invalid : "
        + ex.getMessage());
}

De manera similar, para otra base de datos, debemos especificar el número de puerto correcto, es decir, 27017 para MongoDB, ya sea en caso de que SSL (capa de conexión segura) esté allí, se deben verificar las comprobaciones previas de Firewall y, por lo tanto, a través de la codificación podemos sugerir las soluciones para superar la excepción 

Conclusión: Como hay disponibles comandos preparados como ping, telnet , etc. y herramientas como PuTTY, podemos verificar la información de conectividad y superar la excepción.

Publicación traducida automáticamente

Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *