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
을 지정된 URL
에서 .xml
파일을 읽고 지정된 fileName
에 쓰는 downloadXML()
메서드에 전달합니다. 로컬 시스템에 저장됩니다.
이 코드 예제는 구문 및 의미론적으로 정확하지만 java.net.SocketException: Network is unreachable
예외를 생성합니다. 오류는 현재 네트워크를 사용할 수 없음을 알려주는 자체 설명입니다.
이 오류가 발생하는 이유는 연결 고장입니다. Wi-Fi, 3G 또는 기계(컴퓨터/노트북)의 일반 인터넷 연결에서 발생할 수 있습니다.
이 오류가 발생할 때마다 인터넷 연결이 안정적이지 않고 응용 프로그램을 작성하는 동안 때때로 끊어질 수 있다고 가정해야 합니다.
예를 들어 지하실이나 튜브 등에 있을 때 모바일에서 자주 발생합니다. PC/노트북에서 앱을 사용할 때도 발생하지만 빈도는 낮습니다.
두 번째 이유는 잘못된 Port
및/또는 HostName
일 수 있습니다. 둘 다 올바른지 확인하십시오.
또한 오류 식별에 도움이 될 수 있는 두 가지 사항을 더 기억해야 합니다.
-
먼저, 인터넷에서 완전히 연결이 끊어지면
java.net.UnknownHostException
오류가 발생합니다. -
일반적으로
Network is unreachable
은Timeout Error
와 다릅니다.Timeout Error
에서는 어디로 가야 하는지조차 찾을 수 없습니다.예를 들어 Wi-Fi 카드가 꺼져 있는 것과 Wi-Fi가 없는 것 사이에는 차이가 있을 수 있습니다.
먼저 필요한 포트가 열려 있는지 확인하기 위해 일반적인 방화벽 조작을 수행합니다. 그런 다음 발생할 수 있는 네트워크 문제를 살펴보십시오.
방화벽을 끄고 라우터 및 합병증과 같은 장애물을 제거하여 코드 관련 문제가 아닌 네트워크 관련 문제이므로 가능한 가장 간단한 시나리오에서 작동하도록 합니다.