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
このコードでは、URL
と fileName
を downloadXML()
メソッドに渡します。このメソッドは、指定された URL
から .xml
ファイルを読み取り、それを指定された fileName
に書き込みます。 ローカル システムに保存されます。
このコード例は構文的にも意味的にも正しいですが、java.net.SocketException: Network is unreachable
例外が生成されます。 このエラーは一目瞭然で、現時点でネットワークが利用できないことを示しています。
このエラーの原因は、接続の故障です。 Wi-Fi、3G、またはマシン (コンピューター/ラップトップ) の通常のインターネット接続で発生する可能性があります。
このエラーが発生するたびに、インターネット接続が安定しておらず、アプリケーションの作成中に時々失われる可能性があると想定する必要があります。
たとえば、これは地下室や地下鉄などにいるときにモバイルで頻繁に発生します。また、PC/ラップトップでアプリを使用しているときにも発生しますが、頻度は低くなります.
2 番目の理由は、Port
および/または HostName
が正しくない可能性があります。 両方が正しいことを確認してください。
さらに、エラーの識別に役立つ 2つのことを覚えておく必要があります。
-
まず、インターネットから完全に切断されている場合、a
java.net.UnknownHostException
エラー が発生します。 -
通常、
Network is unreachable
はTimeout Error
とは異なります。Timeout Error
では、どこに行けばよいかさえわかりません。たとえば、Wi-Fi カードをオフにしている場合と Wi-Fi を使用していない場合には違いがあります。
まず、ファイアウォールで通常の調整を行い、必要なポートが開いていることを確認します。 次に、発生している可能性のあるネットワークの問題を調べます。
コード関連の問題ではなく、ネットワーク関連の問題であるため、ファイアウォールをオフにし、ルーターや合併症などの障害を排除して、可能な限り単純なシナリオで機能するようにします。