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.
-
Primero, obtendrá un error
java.net.UnknownHostException
si está completamente desconectado de Internet -
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.
Artículo relacionado - Java Exception
- Arreglar Java.Net.SocketException: error de tubería rota en Java
- Clase de excepción Java Throwable VS
- Comprender la excepción de tiempo de ejecución en Java
- Corrija la excepción Java.Net.BindException: la dirección ya está en uso: Bind
- El proceso de Java Gateway se cerró antes de enviar su número de puerto
- Excepción de entrada no válida en Java