Java.Net.SocketException: ネットワークに到達できません

Mehvish Ashiq 2023年10月12日
Java.Net.SocketException: ネットワークに到達できません

今日は、Java でのプログラミング中に発生する java.net.SocketException: Network is unreachable 例外の考えられる理由と解決策について説明します。

Java での java.net.SocketException: Network is unreachable の考えられる理由と解決策

コード例 (エラーの原因):

// 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

このコードでは、URLfileNamedownloadXML() メソッドに渡します。このメソッドは、指定された URL から .xml ファイルを読み取り、それを指定された fileName に書き込みます。 ローカル システムに保存されます。

このコード例は構文的にも意味的にも正しいですが、java.net.SocketException: Network is unreachable 例外が生成されます。 このエラーは一目瞭然で、現時点でネットワークが利用できないことを示しています。

このエラーの原因は、接続の故障です。 Wi-Fi、3G、またはマシン (コンピューター/ラップトップ) の通常のインターネット接続で発生する可能性があります。

このエラーが発生するたびに、インターネット接続が安定しておらず、アプリケーションの作成中に時々失われる可能性があると想定する必要があります。

たとえば、これは地下室や地下鉄などにいるときにモバイルで頻繁に発生します。また、PC/ラップトップでアプリを使用しているときにも発生しますが、頻度は低くなります.

2 番目の理由は、Port および/または HostName が正しくない可能性があります。 両方が正しいことを確認してください。

さらに、エラーの識別に役立つ 2つのことを覚えておく必要があります。

  1. まず、インターネットから完全に切断されている場合、a java.net.UnknownHostException エラー が発生します。

  2. 通常、Network is unreachableTimeout Error とは異なります。 Timeout Error では、どこに行けばよいかさえわかりません。

    たとえば、Wi-Fi カードをオフにしている場合と Wi-Fi を使用していない場合には違いがあります。

まず、ファイアウォールで通常の調整を行い、必要なポートが開いていることを確認します。 次に、発生している可能性のあるネットワークの問題を調べます。

コード関連の問題ではなく、ネットワーク関連の問題であるため、ファイアウォールをオフにし、ルーターや合併症などの障害を排除して、可能な限り単純なシナリオで機能するようにします。

著者: Mehvish Ashiq
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

関連記事 - Java Exception