Java.Net.SocketException: la red es inalcanzable

Mehvish Ashiq 12 octubre 2023
Java.Net.SocketException: la red es inalcanzable

Hoy, discutiremos las posibles razones y soluciones para la excepción java.net.SocketException: Network is unreachable mientras se programa en Java.

Posibles razones y solución para java.net.SocketException: la red es inalcanzable en Java

Código de ejemplo (que causa un error):

// import required libraries
import java.io.*;
import java.net.URL;

// Main class
public class Main {
  // download method
  static void downloadXML(String webUrl, String file) throws IOException {
    // create object
    FileWriter xmlFileWriter;
    xmlFileWriter = new FileWriter(file);
    System.out.println("URL used for downloading the file is : " + webUrl);

    // this statement throws an Exception
    BufferedReader inputTextReader =
        new BufferedReader(new BufferedReader(new InputStreamReader(new URL(webUrl).openStream())));

    // create and initialize variables
    String string;
    String fileInString = "";
    string = inputTextReader.readLine();

    // read file
    while (string != null) {
      fileInString += (string + "\r\n");
      string = inputTextReader.readLine();
    }
    // write file
    xmlFileWriter.write(fileInString);
    xmlFileWriter.flush();
    xmlFileWriter.close();
    System.out.println("The File is Downloaded");
  } // end download() function

  // main method
  public static void main(String[] args) {
    try {
      downloadXML("https://www.cellml.org/Members/stevens/docs/sample.xml", "downloadXML.xml");
    } catch (IOException exception) {
      exception.printStackTrace();
    }
  } // end main

} // end Main class

En este código, pasamos la URL y el nombre de archivo al método downloadXML() que lee el archivo .xml de la URL especificada y lo escribe en el nombre de archivo dado, que es más guardado en nuestro sistema local.

Aunque este ejemplo de código es sintáctica y semánticamente correcto, genera la excepción java.net.SocketException: Network is unreachable. El error se explica por sí mismo y nos dice que la red no está disponible en este momento.

La razón que causa este error es la interrupción de la conexión. Puede ocurrir en Wi-Fi, 3G o conexión a Internet simple en la máquina (computadora / computadora portátil).

Siempre que nos salga este error, debemos asumir que la conexión a internet no es estable y puede perderse de vez en cuando mientras escribimos nuestra aplicación.

Por ejemplo, esto sucede con frecuencia con los móviles cuando estamos en el sótano o el metro, etc. También sucede cuando usamos aplicaciones en una PC/portátil, pero es menos frecuente.

La segunda razón puede ser un Puerto y/o Nombre de host incorrecto. Asegúrate de que ambos sean correctos.

Además, debe recordar dos cosas más que pueden ayudar en la identificación de errores.

  1. Primero, obtendrá un error java.net.UnknownHostException si está completamente desconectado de Internet

  2. Por lo general, “La red es inalcanzable” difiere del “Error de tiempo de espera”. En el Error de tiempo de espera, ni siquiera puede encontrar a dónde debe ir.

    Por ejemplo, puede haber una diferencia entre tener nuestra tarjeta Wi-Fi apagada y no tener Wi-Fi.

En primer lugar, realice los ajustes habituales con el cortafuegos para asegurarse de que el puerto necesario esté abierto. Luego, eche un vistazo a los problemas de red que pueda tener.

Apague los firewalls y elimine los obstáculos como los enrutadores y las complicaciones para que funcione en el escenario más simple posible, ya que es un problema relacionado con la red, no con el código.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Java Exception